地理情報システム

地図製作者、地理学者、およびGIS専門家のためのQ&A

5
道路ネットワークをQGISの六角形グリッドにスナップする方法は?
QGIS 2.14を使用して道路網を六角形のグリッドにスナップしようとしていますが、奇妙なアーティファクトが発生しています。 MMQGISで六角グリッドを作成しました。セルは約20 x 23 mです。道路ネットワークを1mバッファリングし、数メートルごとにノードがあるように高密度化しました。私が達成しようとしていることを以下で見ることができます。あなたが見ることができるように、私はいくつかのケースでそれを動作させることができます:- 青は緻密化された道路(緩衝線) 赤は「hexified」バージョンです-これは私が見つけたいものです 灰色は六角形のグリッドです 次に、新しいスナップジオメトリ機能を使用して、ノードを最も近い六角形の角にスナップしました。結果は有望ですが、ラインが六角形(またはその一部)を埋めるために広がるいくつかのエッジケースがあるようです: バッファの理由は、ジオメトリのスナップではジオメトリが異なるレイヤーにスナップできないためです。たとえば、LINEレイヤーのノードをPOINTレイヤーのポイントにスナップすることはできません)。POLYGONをPOLYGONにスナップするのが一番幸せそうです。 バッファリングされた道路線の片側がヘックスセルの片側にジャンプし、反対側がヘックスセルの反対側にジャンプすると、道路が広がると思います。私の例では、鋭角に西から東に交差する道路は最悪のようです。 私が試したもの、成功なし:- 道路ネットワークをわずかにバッファリングするため、ポリゴンのままですが、非常に薄いです。 六角セルの密度を高める(したがって、コーナーだけでなくエッジに沿ってノードがある) 最大スナップ距離の変更(これは最大の効果をもたらしますが、理想的な値を見つけることができないようです) POLYGONではなくLINEレイヤーを使用 LINEレイヤーのみを使用するように変更すると、しばらく機能し、その後クラッシュすることがわかりました。作業をそのまま保存しているようです-一部の行は部分的に処理されています。 理想的にはpostgres / postgisを使用する必要なしに、ライン上のポイントを別のライン/ポリゴンレイヤー上の最も近いポイントにスナップする他の方法を知っていますか(postgisを使用したソリューションも歓迎します)。 編集 試してみたい人のために、ここでDropboxにスターターQGISプロジェクトを配置しました。これには、Hex GridおよびDensified Linesレイヤーが含まれます。(道路ネットワークはOSMからのものであるため、QuickOSMを使用してダウンロードすることができます。たとえば、道路を高密度化するためにオリジナルを取得する必要がある場合)。 OSGB(epsg:27700)であり、単位はメートルで、英国向けにローカライズされたUTMであることに注意してください。

3
新しい投影に変換してから元に戻すと、データの精度に影響しますか?
NAD83 SC State Planeにフィーチャクラス(サウスカロライナ州の郡なので、かなり広い地理的領域)があります。2番目の投影(NAD83 UTM 17)に変換してから、元に戻す必要があります。これを実現するために、Esriのプロジェクトツールを使用します。 この二重変換は、ポリゴン座標の位置を、センチメートル、メートル、キロメートルのどれだけシフトさせることができますか?

1
PostGISのラインからポリゴンを作成する
ポリゴンをラインから小さなポリゴンに分割しようとしていますが、st_split関数を使用できないと思います。必要なのは、ラインストリンググリッドを使用して、大きなポリゴン内に小さなポリゴンを作成することです。 いくつかの方法を試しましたが、結果を得ることができません。私が試したもの: st_split()を使用してLineStringから1つのポリゴンを分割します 境界ポリゴンから。 そして、線ストリング表: 次のポリゴンが必要です。 問題:複数のラインからポリゴンを分割することはできません。マルチラインストリングからポリゴンを分割することもできません。 私が試みているもう1つの方法は、st_polygonize()でラインからポリゴンを作成することです SELECT g.path[1] as gid, g.geom::geometry(polygon, 22033) as geom FROM (SELECT (ST_Dump(ST_Polygonize(geom))).* FROM linestable ) as g; PostgreSQLおよびPostGISを使用してラインセグメントからポリゴンを作成することから抽出 問題:ポリゴン(境界)を1つしか取得できません。 誰かがラインストリングからポリゴンを取得する最善の方法だと教えてもらえますか、または何かが足りない場合は? 注:テーブルは同じSRIDにあり、ジオメトリはグリッドにスナップされます。QGISでは、ラインからポリゴンへのポリゴン化プロセスを完全に実行できます。 ジョンの要求として、ここにラインストリングテーブルがあります。 https://drive.google.com/file/d/0B603y_m735jfS014S0EyVnpMUEU/view?usp=sharing
13 postgis  sql  topology 

1
QGIS Graphical Modelerで反復タスクを簡素化する
上記のモデルを単純化するためにQGISグラフィカルモデラーで使用できるイテレーターはありますか?そうでない場合、モデルを単純化するより良い方法はありますか? 最初の列は入力レイヤーを表し、2列目は交差点、3列目は「交差点」操作の出力、4列目は「位置による属性の結合」操作、5列目は結合操作の結果です。 流域解析のために、「交差点」および「位置による属性の結合」操作を実行したいと思います。目的は、異なる次数のストリームの合計と平均の長さ、ストリーム比、分岐比などの線形形態パラメータを計算することです。 最初のステップは、「order1ストリーム」と分水界を交差させ、次に「Order2ストリーム」と同じ分水界を交差させることです。「order3ストリーム」シェープファイルが提供されている場合、この新しいレイヤーの交差を実行する必要があります。したがって、「order1ストリーム」と「order2ストリーム」のみが必須であり、残りは提供された流域層に依存します。たとえば、分水界が次数4の分水界である場合、必要なストリームは「order4ストリーム」までです。 使用可能なすべての入力レイヤーの交差が完了すると、交差したストリームの合計と平均を取得するオプションを使用して、場所ごとに流域に結合されます。 画像は正しい手順を示しています。モデラーの外部で操作を行うと、結果は正しいです。モデルを実行すると、このエラーが発生します。 「アルゴリズムOrder5_plus_wshed 'NoneType'オブジェクトの実行エラーに属性 'dataProvider'がありません。」 これは、オプションパラメータの1つに入力を提供していない場合(つまり、「order4ストリーム」などの入力)に発生します。ただし、すべての入力を提供すると、必要な結果が得られます。 したがって、このタスクを設定するより良い方法があるかどうかを尋ねたいと思います。

1
Shapely Polygonsの交差点へのフィーチャのカウント
私が持っているgeopandas GeoDataFrame見栄えの何百も含むPolygonとMultiPolygonジオメトリを。ポリゴンは多くの場所で重なります。重複する数のカウントを含む新しいジオメトリを作成したいと思います。このようなもの: 誰もこれにアプローチする方法についてのアイデアを持っていますか?道すら見えない。 最終的には、いくつかのポリゴンが単独で2の価値があるように、ポリゴンに重みを付けることができるようになりたいと思います。これをshapelyのZフィールドで行うといいかもしれません。 余談:私はこれらのライブラリのどれにも特に縛られていませんが、まさに私が終わったところです。これらのジオメトリの座標は実際にはピクセル座標です—別の画像にオーバーレイするラスターを作成することにつまずいています。ランダムなものをインストールできないかもしれないクラウドサーバーなどにこのようなものを展開できるようにしたいので、フットプリントをできる限り小さくしたいと思います。

3
QGISのシェープファイルでポリゴンごとに透明度を設定する方法は?
QGISのシェープファイルでポリゴンごとに透明度を設定する方法は? 例えば: フィールド "値" = 1のポリゴンは完全に透明である必要がありますが、フィールド "値" = 0.4のフィールドは40%の透明度値を持っている必要があります。ポリゴンの色は別のフィールドに依存する必要があります。できれば1つのレイヤーを使用してこれを行いますが、いくつかのブレンドモードで2つのレイヤーを使用しても問題ありません。
13 qgis  style  color  expression 

1
PostGIS-単一のテーブルですべての重複ポリゴンを効率的にST_Unionする方法
私の目標は、単一のテーブルを取り、互いに接触または近接しているすべてのポリゴンを単一のポリゴンにst_unionすることです 私はPostGISについて学び始めているC#開発者です。以下のコードを使用して、これを達成できましたが、非効率的であるように思われ、PostGISには私にとって新しいことがたくさんあります。 最初の試み(まだコメント)から、一度にpolyだけを結合する代わりに、ST_UNIONでarray_aggを使用することで、反復を減らすことができました。 私は私の173から133ポリで終わりました。 sql = "DROP TABLE IF Exists tmpTable; create table tmpTable ( ID varchar(50), Geom geometry(Geometry,4326), Touchin varchar(50) ); create index idx_tmp on tmpTable using GIST(Geom); "; CommandText = sql; ExecuteNonQuery(); sql = ""; for (int i = 0; i < infos.Count(); i++) { sql += "INSERT …
13 postgis 

3
ArcGIS for DesktopでLiDARを使用する場合の* .las対* .xyzまたは* .asciiの利点は?
時々、ArcGISでのモデリングにLiDARデータを使用します。以前は、データの.xyzまたは.asciiのいずれかが提供されていましたが、最近では、.xyzおよびasciiに加えて.lasファイルも提供されています。 私は、「LAS形式のLIDARを持っていることは、LIDARデータを初めて使用する人には明らかかもしれませんが、LIDARデータを初めて使用する人にはわかりにくい」と「ArcGISが最適に機能するバイナリ、効率的、広くサポートされている」という記事を読みました。私は、.lasフォーマットの使用が初めてのカテゴリに分類される人の1人です。 通常、.xyzとasciiでは、Global Mapperを使用してそれらをラスターグリッドに変換し(モデリング内で使用)、. lasファイルも変換する必要があるようです(点群です)。私が尋ねている質問は次のとおりです: 別のラスター形式(GRIDまたは.img)に変換する必要がある場合、.xyzまたはasciiと比較して.lasを使用する利点はありますか?

3
マップ内のフィーチャの隣にチャートを表示する方法は?
この質問は主にQGISソフトウェアに関するものですが、可能な限り簡単に、できればすぐに達成できる限り、他のすべてのソフトウェアソリューションを歓迎します。ただし、制限は静的なマップ(印刷予定)であるため、ここではインタラクティブなWebマップソリューションは使用できません。 時系列データのグラフ(QGISのツール/プラグイン)を作成し、ポイントのテーブル(ライン/ポリゴンでも可)を作成し、フィーチャの横に表示する方法はありますか? シンプルなダイアグラム/ヒストグラムツールを知っています。また、チャートをSVGとしてロードするというアイデアも得ましたが、それは、最初に多くのチャートをエクスポートしてから、それらをシンボルとして手動でリンクする必要があることを意味します。すぐに使えるソリューションがさらにありますか? 私がこれまでに試したことは次のようになります。 私が達成したいのは次のようなものです。

2
変更されたデータソースからQgisレイヤーを更新する
データソースが変更されたときにレイヤーを自動的に更新しようとしています。Rを使用して属性を持つシェープファイルを作成し、QGISでその属性に応じて色付けしています。 さまざまな属性値を使用して新しいシェープファイルを作成し、Qgisマップの色を更新します。ステップ1はそのプロセスをトリガーし、ステップ2は変更されたシェープファイルからレイヤーをリロードします。そのステップ2ここで心配しています。 他の質問/メーリングリストのチャット担当者はtriggerRepaint、レイヤーでの使用について言及しています-それは機能しません。その他の提案にはsetCacheImage(None)、これも機能しません。レイヤーは最終的に更新されますが、実際にはロジックを見ることができず、何もしなかった後に時々驚かされます。または、2分前に何かをしたかもしれません。 更新できるようにする再現可能な方法の1つは、凡例メニューからレイヤーを複製することです。複製は常に現在のシェープファイルからデータを取得し、元のレイヤーも更新されます。そのため、何らかの方法が必要です。 2.8ではうまく機能していたと思いますが、これは2.10なので、どこかに新しいバグがあるかもしれません。 関連するが、2.10では機能しない: QGISでソースが変更された場合、ラスターレイヤーを自動的に再読み込みする方法は? 私が試した他のこと: layer.dataProvider().dataChanged.emit() -一度作業した後、同じレイヤーで再び作業しなかった レイヤーの複製が機能する理由を追跡したと思います-更新されたレイヤーに基づいて新しい使い捨てレイヤーを作成し、更新されたレイヤーを呼び出すと.triggerRepaint()、マップキャンバスで更新されます: QgsVectorLayer( layer.source(), "layer copy", layer.providerType() ) layer.triggerRepaint() 別のレイヤーソースを使用すると動作しません。そのため、同じレイヤーソースに基づいてレイヤーオブジェクトを作成すると思われます... ラスターレイヤー(GeoTIFFから)を使用した簡単なテストと、呼び出しだけrlayer.triggerRepaint()で、マップキャンバスのラスターのビューを確実に更新するようです。
13 qgis  layers 


1
削除された機能属性にアクセスする方法(コミットする前)
レイヤー上のフィーチャ削除イベントの信号セットアップがあります: self.layer.featureDeleted.connect(self.feature_deleted) スロット上の削除された機能から属性を取得しようとすると、StopIterationエラーがスローされます(つまり、機能を取得できません)。 レイヤーへの変更がコミットされる前に、削除されたフィーチャから属性を取得できるはずだと思っていただろうか?それ以外の場合、fidパラメーターの使用方法がわかりません。 def feature_deleted(self, fid): feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next() idx = self.layer.fieldNameIndex('my_attribute') print feature.attributes()[idx] (レイヤーへの変更がコミットされる前に)削除されたフィーチャの属性にアクセスするにはどうすればよいですか?

4
Ubuntuで壊れたGDALとPROJ.4を修復しますか?
ライブラリの問題を解決しましたが、PROJ.4ライブラリがロードされていないライブラリの問題と漠然と関連したものだけが残ります。私は尋ねたフォローアップの質問をこれらのために。 GDALパッケージとPROJ.4ライブラリが破損しているため、ファイルを再投影しようとするとエラーが発生します(以下の古い質問を参照)。GDALの別のインスタンスを誤ってインストールしたときに以前にこの問題が発生したかどうかはわかりません。ただし、アンインストールしてQGISを再インストールしましたが、問題は残ります。 再インストールのたびに、QGISは以前と同じプラグインを使用するため、エラーの原因となっている部分はインストール/アンインストールプロセスによって変更されません。 私が試したもの: sudo apt-get remove build-essential python-all-devそしてsudo apt-get remove gdal-bin手動でインストールGDALをパージします Ubuntu Software CenterでのQGISの(アン)インストール sudo apt-get --purge autoremove dpkg -l | grep '^rc' | awk '{print $2}' | sudo xargs dpkg --purgeおよびdpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purgeコンフィギュレーションファイルを削除するには まだ運がありません。関連しているように見えるものを見つけましたが、それはWindows用であり、Ubuntu …

2
タスクスケジューラでPythonスクリプトを実行しています-スクリプトは実行されません
スクリプトを開いて実行する必要なく、毎月定期的に実行したいスクリプトがあります。Windowsタスクスケジューラで見つけることができるすべてのWebページを参照し、その指示に従いました。ただし、タスクスケジューラからスクリプトを実行すると、スクリプトはPythonでのみ開かれ、実行されません。 タスクスケジューラの実行ウィンドウで、スクリプトのみへのパスと、Pythonプログラムへのパスを含むスクリプトへのパスの両方を入力しようとしました。このブログ投稿で提案されているように、スクリプトとして引数としてスクリプトを使用して、Pythonプログラムへのパスを入力しようとしました。私のスクリプトはハードコーディングされているため、引数を追加する必要はないと思います。 明らかな何かが欠けていますか? PythonコマンドラインではなくPythonプログラムへのパスを使用していたため、問題が発生していました。つまり、「C:\ Python27 \ ArcGIS10.1 \ python.exe」を使用する必要があるときに、「C:\ Python27 \ ArcGIS10.1 \ Lib \ site-packages \ pythonwin \ Pythonwin.exe」を使用していました。

2
POSTGISは、ポリゴンの最大長と平均幅を取得します
postgisにはポリゴンタイプのテーブルがあります。 ポリゴンの最大長を自動的に計算する必要があります。 そして2番目は平均幅です。 他の場合はすべてのポリゴンがほぼ長方形になりますが、実際には曖昧であり、幅と高さを区別することはほとんど不可能であるため、これが可能かどうかを今疑っています。 誰かがこれに光を当てることができるかどうか見てみましょう。 よろしく、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.