タグ付けされた質問 「point-in-polygon」

一般的なGIS操作。ポイントがポリゴンの境界内にあるかどうかを判断するために使用されます。

2
2億ポイントのPoint in Polygon分析の最速のソリューションを探しています[終了]
次の形式の2億の観測値を含むCSVがあります。 id,x1,y1,x2,y2,day,color 1,"-105.4652334","39.2586939","-105.4321296","39.2236632","Monday","Black" 2,"-105.3224523","39.1323299","-105.4439944","39.3352235","Tuesday","Green" 3,"-104.4233452","39.0234355","-105.4643990","39.1223435","Wednesday","Blue" 座標セット(x1 / y1およびx2 / y2)ごとに、それが含まれる米国国勢調査地区または国勢調査ブロックを割り当てたい(国勢調査地区TIGERシェープファイルをここからダウンロードした:ftp : //ftp2.census.gov/ geo / tiger / TIGER2011 / TRACT / tl_2011_08_tract.zip)。そのため、観測ごとにポリゴンのポイント操作を2回行う必要があります。一致が非常に正確であることが重要です。 ソフトウェアを習得する時間を含め、これを行う最も速い方法は何ですか?48GBのメモリを搭載したコンピューターにアクセスできます-これが関連する制約になる場合があります。 いくつかのスレッドは、PostGISまたはSpatialiteの使用を推奨しています(Spatialiteは使いやすいようですが、PostGISと同じくらい効率的ですか?)。これらが最良のオプションである場合、空間インデックス(RTree?)を設定することが必須ですか?もしそうなら、どのようにそれを行うのでしょうか(例:国勢調査シェープファイルの使用)サンプルコード(またはサンプルコードへのポインター)を含む推奨事項に非常に感謝します。 このサイトを見つける前の最初の試みは、ArcGISを使用して、米国国勢調査ブロックのデータのサブサンプル(100,000ポイント)の空間結合(x1 / y1のみ)を行うことでした。プロセスを強制終了するまでに5時間以上かかりました。40時間未満の計算時間でデータセット全体に実装できるソリューションを期待しています。 以前に尋ねられた質問をおApびします-私は答えを一読しましたが、どのように推奨事項を実装するのか疑問に思っています。私はSQL、Python、Cを使用したことがなく、ArcGISを使用したことが一度もありません-私は完全な初心者です。

4
空間ポリゴンにグリッドをオーバーレイし、Rを使用してグリッド要素固有の座標がどこにあるかを確認
どのようにRを使用して シェープファイルを200メートルの正方形/サブポリゴンに分割し、 以下の元のマップ上にこのグリッド(各正方形のID番号を含む)をプロットし、 特定の地理座標がどの正方形にあるかを評価します。 私はGISの初心者であり、これはおそらく基本的な質問ですが、Rでこれを行う方法に関するチュートリアルは見つかりませんでした。 これまでに行ったことは、NYCのシェープファイルを読み込んで、いくつかの典型的な地理座標をプロットすることです。 以下のデータを使用してこれを行う例(Rコード)を探しています。 # Load packages library(maptools) # Download shapefile for NYC # OLD URL (no longer working) # shpurl <- "http://www.nyc.gov/html/dcp/download/bytes/nybb_13a.zip" shpurl <- "https://www1.nyc.gov/assets/planning/download/zip/data-maps/open-data/nybb_13a.zip" tmp <- tempfile(fileext=".zip") download.file(shpurl, destfile=tmp) files <- unzip(tmp, exdir=getwd()) # Load & plot shapefile shp <- readShapePoly(files[grep(".shp$", files)]) plot(shp) # Define …

2
PostGISでポリゴン内のポイントを見つけるにはどうすればよいですか?
PostGISの特定のポリゴン内にあることが保証されているポイントを見つけるにはどうすればよいですか? 私はST_Centroid機能を知っています。ただし、重心は常にポリゴン内にあるとは限りません。以下を参照してください。 さらに、多角形の境界上にある点の使用を避けたいのですが、境界内にある(ドーナツ型の多角形の穴内にはない)点が必要です。

3
Rの空間ポイントデータをポリゴンに結合する
この質問は、地理情報システムStack Exchangeで回答できるため、Stack Overflowから移行されました。 4年前に移行され ました。 ポイントデータとポリゴンデータ間の空間結合を実行しようとしています。 CSVファイルAにイベントの空間座標を示すデータがあり、ポリゴンとして領域の境界を含む別のファイル、シェープファイルBがあります。 head(A) month longitude latitude lsoa_code crime_type 1 2014-09 -1.550626 53.59740 E01007359 Anti-social behaviour 2 2014-09 -1.550626 53.59740 E01007359 Public order 3 2014-09 -1.865236 53.93678 E01010646 Anti-social behaviour head(B@data) code name altname 0 E05004934 Longfield, New Barn and Southfleet <NA> 1 E05000448 Lewisham Central …

7
ポイントCSVをポリゴンシェープファイルと空間的に結合する最速の方法
10億ポイントのCSVファイルと、約5,000のポリゴンを持つシェープファイルがあります。ポイントとポリゴンを空間的に結合する最速の方法は何ですか?各ポイントについて、包含ポリゴンIDを取得する必要があります。(ポリゴンは重なりません。) 通常、両方のデータセットをPostGISにロードします。より速く仕事を終わらせる方法はありますか? オープンソースのソリューションを探しています。

2
Postgisでポリゴンのポイントを数える
単純な問題があります。ポリゴンのセット内のポイントの数をカウントしたいのです。 私はすでにSQLを持っていますが、実際にポイントを含むポリゴンのgidのみを返します。 私のテーブル:19.000行のポリゴンレイヤーと450行のポイントレイヤー。 次のSQL select grid.gid, count(*) AS totale FROM grid, kioskdhd3 WHERE st_contains(grid.geom,kioskdhd3.geom) GROUP BY grid.gid; 実際にポイントを含む320個のポリゴンのみを返します。しかし、ポイントの数が0であっても、すべてのポリゴンが返されるようにします。 もちろん、それは私のWHERE節に関係しています。st_containsのどこに置く必要がありますか? ありがとう、カーステン

2
Pythonでポイントがマルチポリゴン内にあるかどうかを確認する
シェープファイル、フィオナ、ogrなどのライブラリを使用してコードのいくつかの例を試して、ポイント(x、y)がArcMapで作成された(したがって、シェープファイル形式で)マルチポリゴンの境界内にあるかどうかを確認しました。ただし、通常の単一ポリゴンシェープファイルでは問題なく機能しますが、マルチポリゴンではうまく機能しない例もあります。私が試したスニペットの一部を以下に示します。 # First example using shapefile and shapely: from shapely.geometry import Polygon, Point, MultiPolygon import shapefile polygon = shapefile.Reader('shapefile.shp') polygon = polygon.shapes() shpfilePoints = [] for shape in polygon: shpfilePoints = shape.points polygon = shpfilePoints poly = Polygon(poly) point = Point(x, y) # point in polygon test if polygon.contains(point): print …

2
rの値を集計するとき、空間ポリゴン%over%ポリゴンはどのように機能しますか?
私は環境疫学プロジェクトに取り組んでおり、そこではポイント暴露(〜2,000の産業豚の操業-IHO)を受けています。これらのIHOは近くのフィールドにスプレーしますが、糞の水滴と臭いは何マイルも移動します。したがって、これらのポイント露出は3miのバッファを取得し、NCセンサスブロックごとのIHO露出の数(さまざまな種類の肥料の合計、豚の数、最も単純な、重複する露出バッファの数)を知りたい(〜200,000)。除外国勢調査ブロック(青)は、(1)最も人口の多い上位5都市のすべてであり、(2)IHOのある郡と国境を接していない郡(注:gRelate関数とDE-9IMコードで行われました-非常に滑らかです!)。下の画像をご覧ください 最後のステップは、バッファリングされた露出表現をすべての国勢調査ブロックに集約することです。ここで私は困惑しています。 これまで、spパッケージの%over%関数を使って楽しい時間を過ごしましたが、over-vignetteから、poly-polyとpoly-line overはrgeosで実装されていることを理解しています。ビネットはラインポリと自己参照ポリのみを対象とし、集計は対象外です。そのため、合計や平均などの関数集計を使用したポリポリのオプションについて少し混乱しています。 テストケースについては、以下の世界の国の国境ファイルで動作する多少冗長なスニペットを検討してください。これは、ポイントにランダムシードを使用しているため、またワールドファイルをコードでダウンロードして解凍しているため、そのままコピーして実行できるはずです。 最初に100ポイントを作成し、次に関数fnを引数に使用してデータフレーム内の要素を加算します。ここには多くのポイントがありますが、オーストラリアを見てください:3ポイント、ラベルとしての3番目。ここまでは順調ですね。 次に、ジオメトリを変換して、バッファを作成し、元に戻して、それらのバッファをマップできるようにします。(リンクは2つに制限されているため、前のマップに含まれています。)各国がオーバーラップしているバッファーの数を知りたいです。オーストラリアの場合、目で見て4です。ただし、over関数で取得します。コードの最終行で私の混乱を参照してください。 編集:r-sis-geoのコメンターが集約関数に言及していることに注意してください-スタック交換質問63577でも参照されています-そのため、回避策/フローはその関数を介している可能性がありますが、なぜ行く必要があるのか​​分かりませんポリポリを集約するために、他の空間オブジェクトにその機能があるように思えます。 require(maptools) require(sp) require(rgdal) require(rgeos) download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip", destfile="world.zip") unzip("world.zip") world.map = readOGR(dsn=".", "TM_WORLD_BORDERS_SIMPL-0.3", stringsAsFactors = F) orig.world.map = world.map #hold the object, since I'm going to mess with it. #Let's create 500 random lat/long points with a single value in the data frame: the …

1
Rの空間演算子?
Rで空間選択またはフィルターを実行するにはどうすればよいですか?私はこれをPostGISで(たとえば)を使用して行うことができます: SELECT * FROM mypoint, mypoly WHERE ST_Within(mypoint.geom, mypoly.geom); 同様に、他のほとんどのGISソフトウェアでも同様です。だから私はRの何かが次のようになると期待しています: mypoint[within(mypoint, mypoly),] しかし、私はどこにもリードを見つけることができません。PostGIS / GEOS / JTS / Shapelyで使用される一般的な空間述語の用語を使用するものを探しています(内、含む、交差、重複、タッチなど。DWithinはボーナスです)。この機能またはライブラリはRに存在しますか?そうでない場合、類似した何かがありますか? 注:Rではsp、オブジェクトにクラスを使用します(SpatialPointsDataFrameなど)。

2
QGISを使用してポイントのクラスターをポリゴンに変換しますか?
クラスターにグループ化された入力ポイントレイヤーがあるため、ポイントの各クラスターをポリゴンに変換したいと考えています。 この質問(ポイントのセットをQGISの特定のフィールドに基づいてポリゴンに変換する方法)は、私が望んでいた答えが出ていないことに近づいているようです。 したがって、基本的に、以下に示すように(属性フィールドに基づいて)ポイントの各クラスターをポリゴンに変換するアルゴリズムがQGISに必要ですか? 「Point2One」プラグインを試しましたが、以下のような間違った結果が表示されました... 私のデータのコピーはここにあります。

1
フィールドを更新して、STIntersectsを使用してポリゴン内のポイントの数を指定しますか?
ポイントレイヤー(dbo.ptLayer)があります 約1Mポイント 空間ジオメトリタイプ(dbo.ptLayer.geom) 空間インデックスはまだありませんが、データ収集が完了すると作成されます。 ポリゴンレイヤー(dbo.polygonLayer)があります 約500個のポリゴン。 空間ジオメトリタイプ(dbo.polygonLayer.geom) どちらにもIDというフィールドがあります。 ポリゴンレイヤーの空の整数フィールドに、各ポリゴン内の合計ポイント数を入力するにはどうすればよいですか? 他のソフトウェア製品にもアクセスできますが、純粋にSQLおよびSQL Server内で何ができるかを知りたいと思っています。 STIntersectsを使用する必要があると思いますが、このフィールドにデータを入力するための更新を行う最適な方法を知りたいと思います。

3
複数のポリゴンのポリゴンアルゴリズムのポイント
Googleマップに多数のポリゴンがあります。 ここに私が興味を持っている問題があります:緯度、経度の点を考えると、この点があるすべてのポリゴンを決定する最良の方法は何ですか? 明らかな方法は、各ポリゴンに対して「ポリゴン内のポイント」アルゴリズムを繰り返し実行することですが、特に数千のポリゴンがある場合、そのようなクエリに答える効率的なアルゴリズムがあるのではないかと思いました。

2
ポリゴン内にあるポイントでデータベース行を更新する
2つのテーブルを含むPostGIS / Postgresql DBがあります。1つはポイントジオメトリを持ち、もう1つは国の境界をポリゴンとして表します。各ポイントが交差する国名を、ポイントテーブルの各行に追加したいと思います。多分1つの大きな更新クエリとして。これは単純なSQLを使用して実行できると思いますが、どこから始めればよいかわかりません。これについてのアドバイスは大歓迎です...

1
ポリゴンクエリのポイントのGISTインデックスによるパフォーマンスの向上
2つのテーブルがあります。locations(id、region_id、the_geom)とregions(id、the_geom)です。各ロケーションポイントについて、それが配置されているリージョンを特定します。 UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); ロケーションポイントにGISTインデックスを作成することには意味がありますか?リージョンポリゴンにインデックスを作成しますが、ポイントについてはわかりません。クエリを高速化できますか?

1
ポリゴンクエリの非常に大きなポイントを最適化する
住所ポイントの全国データセット(3700万)とタイプMultiPolygonZの洪水アウトライン(200万)のポリゴンデータセットがあります。一部のポリゴンは非常に複雑で、最大ST_NPointsは約200,000です。PostGIS(2.18)を使用してフラッドポリゴンにあるアドレスポイントを特定し、これらをアドレスIDとフラッドリスクの詳細を含む新しいテーブルに書き込もうとしています。アドレスの観点(ST_Within)から試してみましたが、洪水地域の観点(ST_Contains)から始めてこれを入れ替えました。根拠は、洪水のリスクのない大きな地域があることです。両方のデータセットが4326に再投影され、両方のテーブルに空間インデックスがあります。以下の私のクエリは3日間実行されており、すぐに終了する兆候はありません! select a.id, f.risk_factor_1, f.risk_factor_2, f.risk_factor_3 into gb.addresses_with_flood_risk from gb.flood_risk_areas f, gb.addresses a where ST_Contains(f.the_geom, a.the_geom); これを実行するより最適な方法はありますか?また、このタイプのクエリを長時間実行する場合、リソース使用率とpg_stat_activityを確認する以外に、進行状況を監視する最良の方法は何ですか? 私の元のクエリは3日間で問題なく終了し、他の作業に追われたため、ソリューションを試すために時間を費やす必要がなくなりました。しかし、私はこれを再検討し、推奨事項を検討したところ、これまでのところ良好です。私は以下を使用しました: ここで提案されているST_FishNetソリューションを使用して、英国上空に50 kmのグリッドを作成しました 生成されたグリッドのSRIDをBritish National Gridに設定し、それに空間インデックスを構築しました ST_IntersectionとST_Intersectsを使用してフラッドデータ(MultiPolygon)をクリップしました(ここで問題になるのは、shape2pgsqlがZインデックスを追加したときに、gemでST_Force_2Dを使用する必要があったことだけです) 同じグリッドを使用してポイントデータをクリップしました 行に作成されたインデックス、各テーブルにcolと空間インデックス これでスクリプトを実行する準備ができました。国全体をカバーするまで、結果を新しいテーブルに移入する行と列を繰り返し処理します。しかし、洪水データを確認したところ、非常に大きなポリゴンのいくつかが翻訳中に失われたようです!これは私のクエリです: SELECT g.row, g.col, f.gid, f.objectid, f.prob_4band, ST_Intersection(ST_Force_2D(f.geom), g.geom) AS geom INTO rofrse.tmp_flood_risk_grid FROM rofrse.raw_flood_risk f, rofrse.gb_grid g WHERE (ST_Intersects(ST_Force_2D(f.geom), g.geom)); 私の元のデータは次のようになります: ただし、ポストクリッピングは次のようになります。 これは、「欠けている」ポリゴンの例です。

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