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

OGR Simple Features Libraryは、ベクターファイル形式へのアクセスを提供するC ++オープンソースライブラリ(およびコマンドラインツール)です。

2
ogrとPythonを使用したポリゴン内の(ラインストリングの)ポイント
私は現在、シェープファイルにあるジオメトリ機能からトポロジーネットワークを構築する必要があるプロジェクトに取り組んでいます。これまでのところ、Ben Reillyのオープンソースプロジェクトを使用して、ラインストリングをnetworkxエッジに変換し、近接フィーチャ(他のラインストリングが言う)を検出して、それらを最も近いポイントに追加して、最短パスアルゴリズムを実行できるようにしました。 しかし、これは1つのシェープファイルでは問題ありません。ただし、ここで、さまざまなシェープファイルの機能を大きなnetworkxグラフに接続する必要があります。したがって、たとえば、ポイントがポリゴン内にある場合、それを接続します(接続するとは、次のシェープファイル内のポイントでnetworkxエッジ-add_edge(g.GetPoint(1)、g.GetPoint(2)を追加することを意味します)。も同様の属性(IDなど)を共有するポリゴン内にあります。異なるshp内のポリゴンは、座標ではなく同じIDのみを共有することに注意してください。ポリゴン内にあるポイントも同じ座標を共有しません。 この問題に対する私の解決策は、ポリゴンに存在するポイントを特定して保存し、同じIDを持つポリゴンに存在する次のシェープファイルでポイントを見つけて、それらの間にnetworkxエッジを追加することでした。 ポイントがポリゴン内にあるかどうかを確認するにはどうすればよいですか?よく知られているアルゴリズムがあります。それを行うRayCastingアルゴリズムです。アルゴリズムを実装するためにはポリゴンの座標が必要であり、OGRのジオメトリのドキュメントをざっと見てみた後でも、それらにアクセスする方法が今はわからないので、ここで実際に行き詰まりました。それで、私が質問している質問は、ポリゴンポイントまたは座標にアクセスする方法です。または、ポイントがポリゴン内にあるかどうかを検出する簡単な方法はありますか?osgeo.ogrライブラリでPythonを使用して、次のコードを記述しました。 if g.GetGeometryType() == 3: #polygon c = g.GetDimension() x = g.GetPointCount() y = g.GetY() z = g.GetZ() 私の問題のより良い理解のために画像を見てください。 [編集] これまでのところ、すべてのポリゴンオブジェクトをリストに保存して、線ストリングの最初と最後のポイントを比較してみました。ただし、Paoloの例は、ポイントオブジェクト参照とポリゴンオブジェクト参照の使用に関連しています。これは、ライン全体がポリゴン内ではなく、ラインストリングの最初または最後のポイント内にあるため、ラインオブジェクト参照では機能しません。 [編集3]ラインストリング の最初と最後のポイントの座標から新しいジオメトリポイントオブジェクトを作成し、それを使用してリストに保存されたポリゴンジオメトリオブジェクトと比較すると、問題なく動作するようです。 for findex in xrange(lyr.GetFeatureCount()): f = lyr.GetFeature(findex) flddata = getfieldinfo(lyr,f,fields) g = f.geometry() if g.GetGeometryType() == 2: for j in xrange(g.GetPointCount()): if j …

2
ogr pythonを使用してベクターシェープファイルをバッファーする方法
http://www.naturalearthdata.com/downloads/50m-cultural-vectors/から国と居住場所のデータセットを使用してPythonでOGRを使用する方法を学習しようとしています。フィルターとバッファーを使用して、指定された国の指定されたバッファー(ne_50m_admin_0_countries.shpのフィーチャクラスADMINからフィルター)内のポイント(ne_50m_populated_places.shp)を見つけようとしています。問題は、buffer()に使用するユニットが理解できないことです。スクリプトでは、スクリプトが機能するかどうかをテストするために、任意の値10を使用しました。スクリプトは実行されますが、名前が付けられた国「アンゴラ」のカリブ地域周辺の人口の多い場所を返します。理想的には、バッファ距離を指定できるようにしたいのですが(たとえば500km)、buffer()がwgs84 lat / long形式であるcountrys.shpの単位を使用していることがわかっているので、これを行う方法を理解できません。これを達成するための方法についてのアドバイスをいただければ幸いです。 # import modules import ogr, os, sys ## data source os.chdir('C:/data/naturalearth/50m_cultural') # get the shapefile driver driver = ogr.GetDriverByName('ESRI Shapefile') # open ne_50m_admin_0_countries.shp and get the layer admin = driver.Open('ne_50m_admin_0_countries.shp') if admin is None: print 'Could not open ne_50m_admin_0_countries.shp' sys.exit(1) adminLayer = admin.GetLayer() # open ne_50m_populated_places.shp …
10 python  ogr  buffer 

2
KML / GMLレイヤーを編集できないのはなぜですか?
QGISでの最初の経験に戸惑う初心者 自転車ルートを定義するラインがいくつかあります。 元々は.gmlファイルに保存され、後で.kmlに変換されてGEで表示できるようになりました。 QGISで.gmlと.kmlの両方をレイヤーとして開くことができますが、どちらも線を編集できません .gmlまたは.kmlレイヤーをShapefileとして保存し、そのシェイプファイルをQGISレイヤーとしてロードすると、線を編集できます。 また、.kmlファイルをロードし、新しい空白のシェープファイルレイヤーを作成し、.kmlレイヤーの行を選択してコピーし、空白のシェープファイルレイヤーに貼り付けようとしましたが、これも不可能でした。 線がShapelファイルとして保存するのに十分なほどKMLレイヤー上のQGISによって理解されるかどうか、なぜ編集できないのかわかりません。私はこれを説明する基本的な何かを見逃しているに違いないと感じ、おそらくそれは私が理解すべき他の意味合いを持っています。
10 qgis  kml  ogr  editing  gml 

2
国際日付変更線を横切るポリゴン[-180 .. + 180経度]
衛星軌道帯用のポリゴンを生成しようとしています。これまでのところ、[lat、long]で各帯のエッジを表す2つの線を生成する方法があります。一部のスワスは国際日付変更線と交差しているため、次のように囲みます。 私はこれを解決することができましたogr2ogr -wrapdateline: ogr2ogr -wrapdateline -f "ESRI Shapefile" test.shp orbits.shp おそらく行を分割します 次に、両方の線の内側にポリゴンを生成できるようにしたいと思います。したがって、たとえば、スワスの1つのエッジが日付ラインと交差する場合、次のように、ポリゴンが反対側に現れたときに塗りつぶします。 タスクを何度も繰り返す必要があるため、自動化された方法が必要です。できればpythonで行を生成します。以下は、これらの行を含む2つのシェープファイルです。wraparound ; 固定日付

2
OGR / GDALを使用してPythonでシェープファイルとラスターがオーバーラップするかどうかを判断する [閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 OGR / GDALを使用してPythonでスクリプトを作成しています。 シェープファイルのセットとGeoTiffラスターファイルのセットがあります。 シェープファイルがラスター領域と交差しない場合、スクリプトに無視させたいのですが。 シェープファイルは長方形ではないため、layer.GetExtent()から返されたxmin / xmax、ymin / ymaxの値を単純に比較することはできません。全体的な形状を表す実際のポリゴンが必要です。次に、そのポリゴンがラスタースクエアと交差するかどうかを判断する方法が必要です。 どういうわけか、シェープファイル内のすべてのポリゴンを1つのフィーチャにマージし、そのフィーチャのジオメトリを読み取って、その情報をラスター範囲と比較できると考えていました。ただし、具体的にどのように実行するかはわかりません。 シェープファイルからボーダーポリゴン情報を抽出する方法は? そのポリゴンが特定の正方形の領域と交差するかどうかを判断するにはどうすればよいですか?

3
gdalがインストールされていてもogrモジュールはありませんか?
素晴らしいPySALパッケージのマッピングコンポーネントを使用しようとしていますが、何らかの理由でogrモジュールがありません。gdalに同梱されているような印象を受けました。何か不足していますか? import gdal import ogr --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-29-ef9eb3418665> in <module>() ----> 1 import gdal 2 import ogr ImportError: No module named gdal 更新: 飛行機に乗るのが少し急いでいたので、いくつかの重要な情報を含めることができませんでした。ここで説明したapt-getメソッドを使用してpython-gdalを既にインストールしました。パッケージマネージャーが正しくインストールしなかった可能性はありますか? choct155@choct155-Q550LF:~$ sudo apt-get install python-gdal Reading package lists... Done Building dependency tree Reading state information... Done python-gdal is already the newest …
9 python  gdal  ogr 

2
フィールドに値を追加するGDAL SQL構文
属性テーブルに新しいフィールドを作成し、文字から整数に変換した後、別のフィールドの値を入力しようとしましたが、正しい構文を取得できません。これをMSYSのシェルスクリプトとして実行します。 cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/ myfile=extr_and_app.shp name=${myfile%.shp} ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num int(3)" ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CONVERT(code_06 As int(3))" エラーメッセージ(MSYS): Kay@KAY-PC /c/users/kay/desktop/bash $ sh calc_field_shp.sh Warning 6: Unsupported column type 'int'. Defaulting to VARCHAR INFO: Open of `extr_and_app.shp' using driver `ESRI Shapefile' …
9 sql  ogr 

6
gdalとogrのGUIリソースはありますか?
GISのプログラミング側に不慣れな人にとっては、多くの優れたツールやリソースがアクセスできないと感じています。gdalやogrなどのライブラリでジオプロセシングを処理するためのGUIベースのウィザードに興味があります。任意のヒント?
9 gdal  ogr  gui 

6
多くのシェープファイルからサムネイル画像を生成するにはどうすればよいですか?
同僚と私は最近、Mapotecaと呼ばれるオープンソースプロジェクトをリリースしました。これは、GDAL / FWToolsインストールと統合して、空間データを探し、範囲、ジオメトリ、要素数、投影を抽出するディレクトリの完全なウォークスルーを可能にするPythonスクリプトのセットです。ユーザーがそれをcsvファイルに書き込む。関連するDBFファイルを説明する部分に取り組んでおり、各シェープファイルのサムネイル画像を生成したいと思っています。Pythonを使用してjpegまたはpngでこれらのサムネイルを生成する方法を知っていますか?
9 python  gdal  ogr  jpg 

2
OGR CreateLayerがTypeErrorを返す
既存のラスターの空間投影に基づいてシェープファイルレイヤーを作成しようとしています。(最終的に、これはgdal.Polygonizeで使用され、ラスターデータから形状を取得します。)ただし、CreateLayerを使用しようとすると、エラーが発生します。 raster_uri-シェープファイルにしたいラスターファイルの場所。私はこれが存在することを知っています。 out_uri-場所新しいシェープファイルを印刷する場所。 layer_name-文字列のレイヤー名入力。 filed_name-文字列フィールド名入力。 これは私が使っていたコードです。 raster = gdal.Open(raster_uri) driver = ogr.GetDriverByName("ESRI Shapefile") ds = driver.CreateDataSource(out_uri) spat_ref = osr.SpatialReference() proj = raster.GetProjectionRef() spat_ref.ImportFromWkt(proj) layer = ds.CreateLayer(layer_name, spat_ref, ogr.wkbPolygon) 次のエラーメッセージが表示されます。 TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *' spat_refのタイプの出力が表示される<class 'osgeo.osr.SpatialReference'>ので、どのchar const *が不満を言っているのかわかりません。 興味深いことに、同じファイルを使用してpythonシェルからこれをすべて実行しようとすると、レイヤーは正常に作成されます。何が問題になるのかについてのアイデアはありますか?
9 python  gdal  ogr  osgeo 

3
OGR情報-空間インデックスを確認しますか?
ベクターレイヤー(シェープファイルなど)に関する情報を取得する場合は、ogrinfoを使用できます。 ogrinfo -so myshapefile.shp mylayer これにより、シェープファイルに関する多くの関連情報が返されます。空間インデックスが存在するかどうかを返すことはできますか?もしそうなら、空間インデックスに関する情報にアクセスできますか? 注:シェープファイルを含むフォルダーを開いて.sbnまたは.sbxを探すのは簡単なことなので、質問はogrinfoに固有です。
9 gdal  ogr 

3
ogr2ogrでの-skipfailuresの意図された動作は何ですか?
ogr2ogrを実行して、geojsonをシェープファイルに変換しようとしています。geojsonフィーチャのいずれかに無効なジオメトリがあるまで(たとえば、ポイントジオメトリの座標配列が空になるまで)、すべてが適切です。 -skipfailuresフラグを含めましたが、ogr2ogrが最初の無効な機能に到達するとすぐに終了します。ここで何か悪いことをしていませんか? ogr2ogr呼び出しの例: ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson
9 ogr  geojson 

3
PostGIS:OGRでジオメトリWKBを解析
LineStringPostGISからジオメトリを引き出してOGR(python bindinds)で解析しようとしています。 from osgeo import ogr import psycopg2 connection = psycopg2.connect("...") cursor = connection.cursor() query = "SELECT geom FROM points LIMIT 1" cursor.execute(query) row = cursor.fetchone() wkb = row[0] geom = ogr.CreateGeometryFromWkb(wkb) cursor.close() connection.close() 私はもう試した: wkb = bin(int(row[0], 16)) そして: SELECT ST_AsEWKB(geom) FROM points LIMIT 1 OGRはそれを解析したくありません。次のエラーを出し続けます: ERROR 3: OGR …

1
ジオメトリ投影速度テスト
最近、ogr / gdalに付属するOGRプロジェクションクラスを使用していますが、pyprojが推奨されたので、試してみようと思いました。切り替えるかどうかを判断するために、速度テストを行いました。以下は、2つをテストするために思いついた小さな(ほとんど)再現可能な例です。このテストが完全に公正であるかどうかはわかりませんので、コメントや推奨事項を歓迎します! 最初にインポートして、平等なプレイフィールドから始めることを確認します。 from pandas import Series # This is what our geometries are stored in from shapely import wkb import functools from shapely.geometry import shape from osgeo import ogr # The following two imports are the important ones from pyproj import Proj, transform from osgeo.osr import SpatialReference, CoordinateTransformation …

2
PythonでOGRを使用してレイヤーを複製するより良い方法は?
ogrを使用して、大きなシェープファイルを多数の小さなシェープファイルに分割しています。元のフィールドとレイヤー構成情報をすべてコピーしたいのですが。これが私が今やっている方法です: src = ogr.Open('original.shp', 0) layer = src.GetLayerByIndex(0) driver = ogr.GetDriverByName('ESRI Shapefile') ds = driver.CreateDataSource('file1.shp') dest_layer = ds.CreateLayer('layer1', srs = layer.GetSpatialRef(), geom_type=layer.GetLayerDefn().GetGeomType()) feature = layer.GetFeature(0) [dest_layer.CreateField(feature.GetFieldDefnRef(i)) for i in range(feature.GetFieldCount())] これを行うためのより簡潔な方法はありますか?
8 shapefile  ogr  fiona 

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