タグ付けされた質問 「shapely」

Shapelyは、地理情報システムに共通の2D平面幾何オブジェクトの構築と分析のためのオープンソースのPythonパッケージです。

2
OGRとShapelyをより効率的に使用していますか?[閉まっている]
私は私のPythonコードをより効率的にする方法についていくつかの提案を探しています。通常、効率は重要ではありませんが、現在、150万ポイント以上の米国の場所のテキストファイルを使用しています。指定されたセットアップでは、1つのポイントで操作を実行するのに約5秒かかります。私はこの数字を下げなければなりません。 3つの異なるPython GISパッケージを使用して、ポイントに対していくつかの異なる操作を実行し、新しい区切りテキストファイルを出力しています。 OGRを使用して、郡の境界シェープファイルを読み取り、境界ジオメトリにアクセスします。 Shapelyは、ポイントがこれらの郡のいずれかにあるかどうかを確認します。 1つ以内の場合、Pythonシェープファイルライブラリを使用して、境界.dbfから属性情報を取得します。 次に、両方のソースからの情報をテキストファイルに書き込みます。 私は、非効率性が2〜3層のループを持っていることにあるのではないかと疑っています。これら3つのパッケージのいずれかを使用するのは初めてなので、これら3つのパッケージのいずれかを使用した経験のある人の助けを特に探しています。 import os, csv from shapely.geometry import Point from shapely.geometry import Polygon from shapely.wkb import loads from osgeo import ogr import shapefile pointFile = "C:\\NSF_Stuff\\NLTK_Scripts\\Gazetteer_New\\NationalFile_20110404.txt" shapeFolder = "C:\NSF_Stuff\NLTK_Scripts\Gazetteer_New" #historicBounds = "C:\\NSF_Stuff\\NLTK_Scripts\\Gazetteer_New\\US_Counties_1860s_NAD" historicBounds = "US_Counties_1860s_NAD" writeFile = "C:\\NSF_Stuff\\NLTK_Scripts\\Gazetteer_New\\NewNational_Gazet.txt" #opens the point file, reads it …

3
正常にインストールされていない
Shapelyを新しいマシンで実行しようとしています。ソースからのインストール、Webページ上のインストーラーの使用、およびの使用の両方を試みましたpip install shapely。私がライブラリから作成しようとするすべての参照from shapely import *は、エラーをスローしますWindowsError: [Error 126] The specified module could not be found。Shapelyを活用しようとして、同様の経験があり、それを正しく機能させる方法を見つけましたか? Pythonエラーがスローされました: WindowsError: [Error 126] The specified module could not be found 環境: Windows 7 64ビット Python 2.7


3
Shapely PolygonおよびMultiPolygonオブジェクトの変換
Shapelyオブジェクト(つまり、PolygonとMultiPolygon)をある投影から別の投影に変換する簡単な方法はありますか? 実際、この時点でそれらがShapelyオブジェクトであるかどうかは気にしません。フィーチャと投影を渡し、再投影されたフィーチャセットを取得するだけです。 この種の機能は存在しますか、それとも手作業でコーディングする必要がありますか?

1
特別な近傍の焦点統計の計算?
指定した基準の近傍内で、ラスターの各セルの焦点統計を計算しようとしています。 背景-3つのバイナリラスタがあり、それぞれが関心のある単一の植生タイプを表します。調査地域内のセル(近隣のセルの合計/合計)から20 km ^ 2以内の各植生タイプの被覆率を計算したいと思います。問題は、各セルの周囲に単純な円または正方形の近傍を使用できないことです。これを行うと、合計の計算に使用される検索領域に研究領域外の領域が組み込まれるためです。この例外は重要です。統計は生息地モデルの入力として使用され、研究エリア外の地域は生息地の可能性があると見なすことができないため、都市化されているためです。それらを含めると、誤った統計が得られます。だから、私はnは、基準を満たす、希望する近隣のサイズに等しいエリアをカバーするために必要なセルの数によって決定されます。基準は、都市化された地域に該当しないことです。何らかの形のセルオートマトンを使用すべきだと考えています。私はCAで働いたことはありませんが。 私が望むのは、スターターコード、または正しい方向のポイントのようなものだと思います。 以下のコメントに返信: 私の研究サイトの境界にあるセルのこの統計を計算しているとしましょう。調査エリア外のすべてのエリアをゼロに割り当てる(またはNoDataを無視する)と、関心のあるエリアカバレッジの約半分を表す統計が得られます。したがって、約10 km ^ 2のエリアのカバレッジ率、20 km ^ 2エリアの代わりに。私は家の範囲のサイズを勉強しているので、これは重要です。それは動物が風景を見る/使用する方法であるため、近所は形を変えなければなりません。20 km ^ 2が必要な場合は、形状またはホームテリトリーを変更します。[NoDataを無視する]チェックボックスをオンにしない場合、セル出力はNoDataになり、NoDataは役に立ちません。 2014年10月24日現在の「プログラム」 ShapelyとFionaを使用してこれまでに作成したコードは次のとおりです。 import numpy as np import pprint import shapely from shapely.geometry import* import fiona from fiona import collection import math traps = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/occurrence/ss_occ.shp', 'r') study_area = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/Study_Area.shp', 'r') for i in study_area: …

1
shapelyを使用して、ポイントに最も近いラインセグメントを検索しますか?
バックグラウンド 既知のポイントから、図に示されているように、MultiLineStringのテーブルに対して最も近い周囲の「見える境界」を確立する必要があります。 私はこのサイトをいくつかの用語(例:最小エッジ、最小周囲、最近傍、クリップ、ポリゴンを含む、可視性、スナップ、カットノード、レイトレース、フラッドフィル、内部境界、ルーティング、凹型ハル)で検索しました。このシナリオに一致すると思われる以前の質問を見つけることができません。 図 緑の円は既知のポイントです。 黒い線は、既知のMultiLineStringです。 灰色の線は、既知のポイントからの放射状の掃引を示しています。 赤い点は、放射状スイープとMultiLineStringsの最も近い交点です。 パラメーター PointはMultiLineStringと交差しません。 Pointは常にMultiLineStrings内の名目上中央に配置されます。 MultiLineStringはPointを完全に囲むことはないため、境界線はMultiLineStringになります。 約1,000個のMultiLineStringを含むテーブルがあります(通常は約100ポイントの単一行を含みます)。 考慮される方法論 既知のポイントから一連の線を構築することにより、放射状スイープを実行します(たとえば、1度の増分で)。 MultiLineStringを使用して、各放射状スイープラインの最も近い交点を確立します。 放射状スイープラインの1つがMultiLineStringのいずれとも交差しない場合、これは、MultiLineStringの周囲構造に収まる周囲のギャップを示します。 概要 この手法は最も近い交差点を検出しますが、放射状スイープの解像度に応じて、必ずしもすべての最も近い境界ノードポイントを検出するわけではありません。誰もがすべての周辺ポイントを確立するための代替方法を推奨したり、何らかの形のバッファリング、セクター化またはオフセットでラジアルスイープテクニックを補完できますか? ソフトウェア 私は、SpatiaLiteやShapelyをソリューションに使用することを好みますが、オープンソースソフトウェアを使用して実装できる提案を歓迎します。 編集:実用的なソリューション(@geneの回答に基づく) from shapely.geometry import Point, LineString, mapping, shape from shapely.ops import cascaded_union from shapely import affinity import fiona sweep_res = 10 # sweep resolution (degrees) focal_pt = Point(0, 0) …

2
ジオパンダを使用してポリゴンエリアを取得しますか?
与えられたgeopandas GeoDataFrameポリゴンのシリーズを含む、私は私のリストにある各機能のキロ平方の領域を取得したいと思います。 これはかなり一般的な問題であり、過去に通常の提案された解決策を使用するようになっているshapelyとpyproj(例えば、直接こことここ)。 これを純粋に行う方法はありgeopandasますか?

2
Shapelyを使用したポリゴンオーバーレイ
Shapelyを使用して、以下に示すすべての重複しないポリゴン(与えられたポリゴンA、B、C)をキャプチャしようとしています。さらに、反復や交差のテストなどを行わずにそうすることを望んでいます。この質問に対する受け入れられた答えは、PostGISメソッドを表していますが、「ユニオン」は人によって異なることを意味するようです。

3
Python(shapely、fiona)を使用して属性に基づいてポリゴンを溶解しますか?
私は、QGISが機能を「溶解」するのと基本的に同じことを行う関数を作成しようとしています。私はそれは非常に簡単だと思ったが、明らかにそうではない。だから、私が集めたものから、フィオナとshapelyの使用がここでの最良の選択肢であるはずです。ベクターファイルをいじり始めたばかりなので、この世界は私にとってもPythonにとっても新しいものです。 これらの例では、http: //tinyurl.com/odfbanuでここに設立された郡のシェープファイルを使用して います :今の私の最善の方法は、に基づいて、以下の通りであるhttps://sgillies.net/2009/01/27/a-more-perfect-union-continued.html。それはうまく機能し、52の状態のリストをShapelyジオメトリとして取得します。この部分を行うためのより簡単な方法がある場合は、お気軽にコメントしてください。 from osgeo import ogr from shapely.wkb import loads from numpy import asarray from shapely.ops import cascaded_union ds = ogr.Open('counties.shp') layer = ds.GetLayer(0) #create a list of unique states identifier to be able #to loop through them later STATEFP_list = [] for i in range(0 , …

1
Shapelyのスナップ(GEOスナップ)が期待どおりに機能しないのはなぜですか?
Shapely / Geopandasを使用して2本の線を互いにスナップしようとしていますが、スナップの結果は非常に奇妙です。私は試した : import geopandas as gpd from shapely.geometry import * from shapely.ops import snap lines1 = gpd.GeoDataFrame.from_file('lines1.shp') lines1 = lines1.to_crs({'init': 'epsg:2227'}) lines2 = gpd.GeoDataFrame.from_file('lines2.shp') lines2 = lines2.to_crs({'init': 'epsg:2227'}) res = lines1 lines2_union = lines2.geometry.unary_union res.geometry = res.geometry.apply(lambda x: snap(x, lines2_union, 14)) res.to_file('result.shp', driver="ESRI Shapefile") そして、この結果を得ました: lines1 = 赤い線 …

2
ラスタを多角形に整形する方法
ラスターをポリゴンに変換するオープンソースのPythonソリューションを探しています(ArcPyは使用しません)。 ラスターをポリゴンに変換するGDAL関数を知っていました。これはマニュアルです:http : //pcjericks.github.io/py-gdalogr-cookbook/raster_layers.html#polygonize-a-raster-band それにもかかわらず、出力はファイルとして保存されず、一時的にメモリ内にある、形の良いポリゴンまたは任意のオブジェクトになる可能性があります。この問題を処理するパッケージまたはコードはありますか? ラスターがnumpy配列で処理されている場合、アプローチは以下のとおりです。

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

4
座標のポリゴンからのKMの面積
私は(python shapely)の座標からのポリゴンを持っています POLYGON ((24.8085317 46.8512821, 24.7986952 46.8574619, 24.8088238 46.8664741, 24.8155239 46.8576335, 24.8085317 46.8512821)) このポリゴンの面積をkm ^ 2で計算したいと思います。Pythonでこれを行う最良の方法は何でしょうか?
13 python  polygon  area  shapely 

3
RTreeでの空間インデックスの使用を理解していますか?
RTreeでの空間インデックスの使用を理解できません。 例:300個のバッファーポイントがあり、各バッファーの交差領域とポリゴンシェープファイルを知る必要があります。ポリゴンシェープファイルには、20,000を超えるポリゴンがあります。プロセスを高速化するために空間インデックスを使用することが提案されました。 SO ...ポリゴンシェープファイルの空間インデックスを作成する場合、何らかの方法でファイルに「アタッチ」されますか、それともインデックスはスタンドアロンですか?つまり、作成後、ポリゴンファイルで交差関数を実行するだけで、より高速な結果を得ることができますか?交差点は空間インデックスがあることを「認識」し、何をすべきかを知っていますか?または、インデックスで実行してから、FIDなどを介して元のポリゴンファイルにそれらの結果を関連付ける必要がありますか? RTreeのドキュメントはあまり役に立ちません(おそらくプログラミングを学んでいるだけだからです)。手動で作成されたポイントを読み取り、それから他の手動で作成されたポイントに対してクエリを実行して、ウィンドウ内に含まれるIDを返すことにより、インデックスを作成する方法を示します。理にかなっています。しかし、インデックスの元のファイルにどのように関連するかについては説明していません。 私はそれがこのような何かに行かなければならないと考えています: ポリゴンシェープファイルから各ポリゴンフィーチャのbboxを取得し、空間インデックスに配置して、シェープファイル内のIDと同じIDを与えます。 そのインデックスをクエリして、交差するIDを取得します。 次に、インデックスのクエリによって特定された元のシェープファイル内のフィーチャのみで交差を再実行します(この最後の部分をどのように行うかはわかりません)。 正しいアイデアはありますか?私は何かが欠けていますか? 現在、このコードを、1つのポイントフィーチャのみを含む1つのポイントシェープファイルと、20,000個以上のポリゴンフィーチャを含む1つのポリゴンシェープファイルで動作するようにしています。 Fionaを使用してシェープファイルをインポートし、RTreeを使用して空間インデックスを追加し、Shapelyを使用して交差を試みています。 私のテストコードは次のようになります。 #point shapefile representing location of desired focal statistic traps = fiona.open('single_pt_speed_test.shp', 'r') #polygon shapefile representing land cover of interest gl = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('class3_aa.shp', 'r')]) #search area areaKM2 = 20 #create empty spatial index idx …

4
Shapelyを使用して個々のラインセグメントを1つのLineStringに溶接します。
私はpythonでShapelyを使用していMultiLineStringて、たくさんのLinestringオブジェクトを与えられています。すべてのLineStringオブジェクトが2つの頂点のみを持つ単純なラインであり、それらがすべて1つの単一ラインの一部であること(ブランチはないこと)を保証できます。 「ドットをつなげて」単一のを作成しますLineString。このために再帰溶接方法を書く必要がありますか、それとももっと速い方法がありますか?
13 python  shapely 

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