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

Pythonは、多くのGISプログラムで使用されているオープンソースのインタプリタ型プログラミング言語です。


2
PythonでPostGISテーブルをShapefileに変換しますか?
PostGISテーブルをシェープファイルに変換したい(pgsql2shpを使用しない)。 シェープファイルでジオメトリを作成するには、Xmin、YminとXmax、Ymaxを指定する必要があり、PostGISテーブルにあるジオメトリは不規則な形状です(境界ボックスを使用して外部を取得できますが、これには以下が含まれます)不穏な私の領域よりもいくつかの余分な領域)。タスクを完了する方法はありますか? プログラムで、Pythonを使用して実行したいと考えています。
10 python  postgis 

1
PythonのArcobject:フィーチャ(形状)ジオメトリを持つオブジェクトにインターフェイスを割り当てます
PythonでArcObjectを使用しようとしています。ジオメトリデータを持つオブジェクトにインターフェイス(IZ.InterpolateZsBetween)を割り当てることに問題があります。コードは次のとおりです。 from Comtypes.client import CreateObject, GetModule import arcgisscripting gp = arcgisscripting.create(9.3) gp.setproduct("ArcInfo") esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb") esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb") esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb") esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb") sPath ="c:/temp/test.gdb" pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\ interface=esriGeoDatabase.IWorkspaceFactory) pWS = pWSF.OpenFromFile(sPath, 0) pFWS = pWS.QueryInterface(esriGeoDatabase.IFeatureWorkspace) pFClass = pFWS.OpenFeatureClass("test_z") pFCursor = …


1
PostGISポリゴンジオメトリのヘルプ-閉じていないリング
私はErik Westraによる超邪悪な本「Python Geospatial Development」(Amazonリンク)のコピーを手に取り、それを調べています。現在、地理空間Webアプリを構築する準備として、GSHHS海岸線データをシェープファイルからPostGISデータベースにロードするように教えています。 私の問題はこれです。GSHHSデータをPostGISにインポートしようとすると、海岸線のポリゴンが「有効」と見なされないために拒否されます。具体的には、海岸線ポリゴンの一部(すべてではない)が「閉じていないリング」であると説明されているエラーメッセージが表示されます。 このエラーは、ポリゴンの最初と最後の点が同じではないことを伝えようとしていることを理解しています。しかし、これは単に真実ではありません。多くのポリゴンのWKT表現を調べましたが、それらは正しいものです。彼らは間違いなく同じ座標で始まり、同じ座標で終わります。 ポリゴンは、OGRライブラリを使用してシェープファイルから抽出され、各ポリゴンフィーチャをWKTにエクスポートします。Shapelyを使用してポリゴンを再構成し、WKBを試しましたが、役に立ちませんでした。私がしている shp2pgsqlとローダーを使用して、MULTIPOLYGONテーブルとPostGISのに同じデータをロードすることができました。 :そこに誰がいた場合、私は思っていた 、おそらく、同じ本を使用()と同じ問題で捕まってしまった、と私のための答えを持っていますか? (b)同様の問題に遭遇し、解決策を見つけましたか? (c)失敗した場合、PostGISにロードする前に有効なジオメトリを確保するための「ベストプラクティス」のアドバイスはありますか? 更新:ある同僚は、「閉じていないリング」の問題は別の問題の兆候である可能性があることを示唆しています。私のPostGIS / PostgreSQL構成にサイズ制限(挿入トランザクション、受信パケット、テキスト文字列など)がある可能性があります。 入力として非常に長いWKTポリゴンを使用しているので、PostGISは、各ポリゴンを完成させるには早すぎる可能性があります。明日テストしてみますが、たぶん聞こえそうです。国境の挿入は、一部のレコードのみを受け入れ、他のレコードは受け入れませんでした。記憶から、受け入れられた形状は、アンティグアなどの小さな島国のものでした(したがって、おそらく短いWKT表現がありました)。 したがって、これは無効なジオメトリスレッドではなく、PostGISデータベース管理スレッドになりかねません。
10 python  postgis  ogr  wkt 

3
pyprojとProj.4を使用してX、Y座標を緯度/経度に変換すると、誤った座標が返される
私は、x座標とy座標を含む複数のXMLファイルを読み取り、それらをすべて1つのcsvファイルに結合するpythonスクリプトを作成しています。緯度と経度はcsvの必須フィールドですが、オハイオ北部州平面usFtのX、Y座標をWGS84に変換するのが困難です。 >>> p = Proj(r'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=us-ft +no_defs') #Nad83 State Plane Ohio North US Feet Proj object using parameters >>> p(739400.91,2339327.3,inverse=True) (-80.138057868777224, 60.278230707978487) >>> p1 = Proj(init="epsg:3734") #Nad83 State Plane Ohio North US Feet Proj object using EPSG code >>> p1(739400.91,2339327.3,inverse=True) (-80.138057868777224, 60.278230707978487) …

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 …


5
1つのシェープファイル属性テーブルを別のdbfテーブルの値で更新する
ここで私がやろうとしていることを説明しようとします: 同じフィールドを持つ1つのシェープファイルと1つの独立したdbfテーブルがあります。dbfテーブルではすべてのフィールドにデータが入力されていますが、シェープファイル属性テーブルでは1つだけなので、「OneField」という名前を付けます。私がやりたいことは、「OneField」(Shapefile)の値が「OneField」(dbfテーブル)の値と同じであることを確認し、同じ場合は、シェープファイル属性テーブルの残りの空のフィールドに値を設定することです。独立したdbfテーブル内。 現時点では、独立したdbfテーブルからシェープファイル属性テーブルに値をコピーしようとしているだけですが、行き詰まっています(このコードを実行すると、pythonwinが動作を停止し、テーブルに何も起こらないというメッセージが表示されます)。手を貸してくれませんか? これがコードです: import arcpy table = "link/to/table.dbf" fc = "link/to/shapefile.shp" # Create a search cursor rowsTable = arcpy.SearchCursor(table) # Create an update cursor rowsFc = arcpy.UpdateCursor(fc) for row in rowsTable: row = row.getValue("OneField") valueTable = row for row in rowsFc: row = row.setValue("OneField", valueTable) rowsFc.updateRow(row) row = rowsFc.next() …
10 python  data  shapefile 

3
Pythonプログラムを実行するボタンをArcMapに作成しますか?
ツールバーのボタンがクリックされたときにArcMap内で実行するスクリプトがあり、これまでのところ、スクリプトをスクリプトツールにすることしかできません。ジオプロセシングツールとしてではなく、コマンドとして実行する必要があります。 これをジオプロセシングツールとして実行すると、コマンドラインウィンドウから同じコードを実行する場合よりも時間がかかります。ArcObjectsの調査を開始したばかりですが、必要な場合はそれを使い始めたいと思います。 ボタンを作成するためのサンプルコードまたはリソースがあれば、それは素晴らしいことです。

1
QGIS Modeler if / else条件、Modelerのカスタムスクリプト
モデル内に単純なif / else関数を作成し、それが可能かどうかを知りたいのですが。 これを行うには、「セグメントレイヤー」の入力が選択されている場合、「セグメント化(平均シフト)」を実行する必要がなく、次のプロセスの入力として「セグメントレイヤー」を使用します。 'Segmentation(meanshift)'の入力は次のとおりです。 ジョセフの答えを実装しようとした後の更新:次のコードを使用してこのエラーが発生しました 更新2、パラメーターを置き換えた後、28行目でエラーが発生しましたこれは「else:」でした ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output vector if BGREN is not None: processing.runalg('otb:segmentationmeanshift', \ -BGREN\ -0\ -70\ -70\ -0.1\ -100\ -100\ -0\ -0\ -0\ -'True'\ -'False'\ -1\ -0.1\ -'Layer'\ -'DN'\ -1024\ -1\ -0\ -output) else: output=Segment_Layer 更新して動作します:)数回試行して、Josephの助けを借りてこのコードが魅力的に機能するようになりました。最後のトリックは、2つのオプション値を「None」に置き換えることでした。 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output …

3
pyQGISで選択したフィーチャにズームする方法
フィーチャを選択してズームする関数を作成したい(QGISと同様)。したがって、次の関数があります。 QgsMapLayerRegistry.instance().addMapLayer(self.vlayer) def zoomTo(self): layer = self.vlayer atable = self.ui.table selectList=[] for i in atable.selectionModel().selectedRows(): ID = atable.item(i.row(),0).text() selectList.append(int(ID)) layer.setSelectedFeatures(selectList) 選択したフィーチャがマップ上で強調表示されます。しかし、選択したフィーチャに「ズーム」する方法や、マップの真ん中に何らかのフォーカスを合わせる方法はわかりません。
10 qgis  python  pyqgis 

1
2点間の標高差を取得するPythonスクリプト[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、地理情報システムスタック交換のトピックになるようにします。 28日前休業。 1000 Kmの長さのストリームセグメントがいくつかあります。上流から下流までの距離1 Kmの2つの連続するポイント間の標高差を見つける必要があります。DEMから標高差を取得するにはどうすればよいですか?ラスター形式とベクター形式のストリームセグメントがあります。Pythonスクリプトについて何か考えがあればもっと良いでしょう。
10 python  dem  elevation 

1
測量士にPythonを教える[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 Pythonを使用して一般的な測量タスクを自動化または簡略化する良い例はありますか? 今週はGISクラスについてPython / ArcPyラボを教えています。GISは主に時間の浪費であり、コースは必須なのでコースのみを受講していると考えるクラスの多くの調査学生がいます。ワクワクするものをあげたいです。 少しコンテキスト:ほとんどの学生はおそらく卒業時に林業または権威の会社で働いているでしょう、そして私たちはアーカンソー州にいるので、この辺りのほとんどすべてがPLSSに基づいています。これまでのところ、私の考えはそれらに角度数学関数を示し、いくつかの無料のPythonベースのCADプログラムについて言及しています。また、Pythonインターフェースを提供するAutoCADのプラグインを作成するプロジェクトがあることも学びました。 私はすでにクラスを教えました、そして予想通り、測量士はあまり興奮していませんでした。調査を容易にするためにPythonを使用する良い例を聞きたいです。

2
関心領域をカバーするためにシェープファイルからポリゴンの最小数を決定します
衛星画像のさまざまなソース(IKONOS、RapidEyeなど)を使用して実行される分析の対象領域を表す多数のシェープファイルがあります。残念ながら、画像ではたとえばLandsatのようなパスローシステムを使用していないため、範囲は大きく異なります。 さまざまな画像取得の範囲を表すシェープファイルを各AOIにクリップしましたが、すべて受け入れ可能と見なされています。これらのシェープファイルの一部には、500以上のポリゴンがあります。 関心のある各領域をカバーするポリゴンの最小数を決定するために、できれば自動化できるアプローチ(PythonとArcInfo 10、できればFOSSも受け入れられる)を見つける必要があります。

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