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

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

1
GDALを使用したナノスケールDEMの作成
少し奇妙な質問かもしれませんが、実際の質問の前に、背景について簡単に説明しましょう。 原子間力顕微鏡(AFM)は、要するに(そして、私の限られた知識で)研究者がマイクロおよびナノスケールで領域をスキャンできる方法です。ある種のプローブを使用して領域を「スキャン」することで機能します。それ以上のことを説明するのは難しいです。私はそれを本当に理解していないからです。私が知っていること、そして私の好奇心を引き起こしたのは、結果が実際には「高さ」値の「グリッド」であるということでした(そのポイントでのプローブの高さを表す512x512の値のマトリックス)。 それから私は考えました:さて、スケールとは別に、これは実際にはデジタル標高モデルです!また、これは、GISツールで理解できるようにDEMファイルを作成できれば、GIS分析を適用できることを意味します。 現状では、AFMマシンを備えたラボで私の重要な仕事をしており、彼女のプロジェクトの1つでそれを使用しています。私は彼女からいくつかのスキャンファイルを取得し、Python(structおよびnumpy)を使用してこれらのバイナリファイルを解析しました。 次に計画しているのは、「適切なDEMへのマッピング」パートです。私はDEMSについてある程度の知識を持っていますが、実際にそれらを生成することになると、私はかなり新しいです。 私が考えているのは、何らかの方法でデータをジオリファレンスする必要があるということです。そのためには、カスタム(平面)座標系が必要です。私の座標系では、マイクロメートルまたはナノメートルを単位として使用することを想定しています。次に、AFMでスキャンされた領域のサイズを見つけるだけです(これはバイナリファイルのどこかにあると考えられます。これは既知であると仮定してください)。 更新:解像度は異なるが同じ領域のスキャンもいくつか行っています。たとえば、2つのスキャンに関する次の情報があります。 大きな画像: Scan Size: 51443.5 nm X Offset: 0 nm Y Offset: 0 nm 小さい(詳細)画像: Scan Size: 5907.44 nm X Offset: 8776.47 nm Y Offset: 1486.78 nm 私が考えているのは、カスタム座標系の原点は0,0である必要があり、大きな画像ではピクセル0,0に座標値(0,0)を割り当て、ピクセル512,512に座標値(51443.5、51443.5)を割り当てることです)(必要な他のポイントの写真を取得すると思います)。 次に、大きい画像はピクセル(0,0)を(8776.47、1486.78)に、(512,512)を(8776.47 + 5907.44、1486.78 + 5907.44)にマッピングします 1番目の質問は次のとおりです。このような座標系のproj4 defを作成するにはどうすればよいですか?すなわち、これらの「現実世界の座標」をカスタム座標系に割り当てるには(または、whubersの提案に従い、ローカル座標系を使用してユニットについて横になっている場合(つまり、ナノメートルをキロメートルとして扱う) 次に、numpy 2次元配列をGeoreferenced DEMファイル形式に転送する必要があります。私はGDAL(または、むしろPythonバインディング)の使用を考えていました。 2番目の質問は次のとおりです。私のような「任意の」データからジオリファレンスされたDEMを作成するにはどうすればよいですか。できればPythonで、オープンソースライブラリを使用してください。 そうすれば、適切な分析ツールを使用するだけで、残りはかなり簡単になります。問題は、このタスクは私自身の好奇心によって駆動されるため、ナノスケールDEMで実際に何をするべきかはよくわかりません。これは頼みます 3番目の質問:ナノスケールDEMをどうするか?どのような分析を行うことができ、DEM分析に適したツールは何ですか?最後に、このデータから陰影起伏と等高線を使用してマップを作成することは可能ですか? 私はすべての提案とポインタを歓迎しますが、予算や資金がない厳密な趣味ベースのプロジェクトであり、ライセンスされたGISアプリケーションにアクセスできないため、無料の代替案を探していることに注意してください。さらに、これらのAFMマシンを販売しているBrukerがソフトウェアを出荷していることは知っていますが、それを使用するのは面白くないでしょう。

1
PyPyでGDALを使用する方法は?
pypyを使用してpythonコードを最適化しようとしています。ほとんどのライブラリをインポートして実行できますが、GDALライブラリをインポートすることはできません。Python 2.7でインポートした場合、同じライブラリは問題なく実行されます。 私はGDALの場所をPYTHONPATHに追加しようとしましたが、GDAL PythonバインディングをPyPyディレクトリにダウンロードしようとしても、pypyはGDALを認識したくないため、次のエラーが発生します。 Traceback (most recent call last): File "app_main.py", line 51, in run_toplevel File "ImportENC-P.py", line 50, in <module> from osgeo import gdal, ogr, osr File "B:\PYPY\site-packages\osgeo\__init__.py", line 21, in <module> _gdal = swig_import_helper() File "B:\PYPY\site-packages\osgeo\__init__.py", line 13, in swig_import_helper import _gdal ImportError: No module named _gdal
14 python  gdal 

1
Pythonは.mxdのファイルサイズを増やします
次を実行するジオプロセシングスクリプトがあります。 arcpy.AddMessage("TEST...") はい、たった1行のコードです。 スクリプトを実行してファイルサイズの増加分を保存すると、空の.mxdが391kbから始まります。 391 kb 431 kb 451 kb 471 kb and so on... ジオプロセシングPythonスクリプトは、ファイルサイズを毎回20〜30 kb増加させるようです。 私は実際に何かをするスクリプトでこのテストを実行し、ファイルサイズを40〜60 kb増やします... また、空のスクリプトを実行しましたが、それは絶対に実行するだけで、ファイルサイズは20〜30 KB増加します... ESRI Techを見つけることができたものから ファイルサイズの増加は、ArcCatalogのArcToolboxの[結果]タブに格納されている大量のジオプロセシング結果が原因である可能性があります。 記事の手順に従って、新しい.mxdに保存することで、ファイルサイズを589 kbから293 kbに減らすことができました。 あなたの考え、これでの経験は?誰かがPythonスクリプトから結果タブを自動削除する方法を見つけたので、毎回新しい.mxdを保存する必要はありませんか? 更新: @AHIGH AHIGHが示唆するジオプロセシングオプションをいろいろ試してみました。ファイルサイズの増加を止めるようには見えません。 @ artwork21ジオプロセシング>結果に移動して結果を削除すると、ファイルサイズが小さくなります。とにかくこのプロセスを自動化して、スクリプトの実行後に結果が自動削除されるようにしますか? ESRI:ジオプロセシングオプションを使用してツールの実行を制御する 一時的な結果の設定に関係なく、ArcMapのコンテンツウィンドウに残っているツールの結果はすべてディスクに保存されます。これは、ジオプロセシングでは、マップドキュメントを保存することにより、ArcMapのコンテンツウィンドウ内のすべてを保存することを前提としているためです。 ファイルサイズが肥大化する結果を除いて、すべてを保存したい... マップドキュメントを保存したくないが、個々のレイヤーにデータを保存する場合は、レイヤーを右クリックし、[データ]> [永続的な設定]をクリックします。 実際には実用的な解決策ではありません... 10.1には、問題を修正できる新しい機能があります。推測して、できるだけ早く10.1にアップグレードするように会社をプッシュする必要があります。 Pythonツール 回避策: [ジオプロセシング]> [ジオプロセシングオプション]> [結果管理]> [結果を次よりも古い状態に保つ]> [保存しない]に設定します。 これにより、ファイルサイズの増加が止まります。 または、Arcmapから独立して実行するようにスクリプトを記述してみることもできます(つまり、Arcmapを開かずに)。 より効率的なコードを記述して、より速く実行できます。一度に複数のmxdを実行するスクリプトのように。
14 python  arcmap  memory 


5
軌跡のクラスタリング((x、y)ポイントのGPSデータ)およびデータのマイニング
GPSデータセットの分析に関して2つの質問があります。 1)軌跡の抽出フォームの記録されたGPS座標の巨大なデータベースがあります(latitude, longitude, date-time)。連続するレコードの日時の値によると、私はその人がたどるすべての軌跡/パスを抽出しようとしています。例えば; 時間から言うとM、(x,y)ペアは時間まで連続的に変化していNます。後N、(x,y)ペアの変化は減少し、その時点で、時間MからN軌道と呼ぶことができます。それは軌道を抽出するときに従うべき適切なアプローチですか?提案できるよく知られたアプローチ/方法/アルゴリズムはありますか?これらのポイントを効率的な方法で維持することを提案したいデータ構造または形式はありますか?おそらく、各軌跡について、速度と加速度を把握することが有用でしょうか? 2)軌跡のマイニングすべての軌跡をたどる/パスを取得したら、それらを比較/クラスタリングするにはどうすればよいですか?開始点または終了点が類似しているかどうかを知りたいのですが、中間パスはどのように比較されますか? 2つのパス/ルートを比較して、それらが類似しているかどうかを判断するにはどうすればよいですか。さらに; 同様のパスを一緒にクラスター化するにはどうすればよいですか? この件に関する研究などを指摘していただければ幸いです。 開発はPythonで行われますが、あらゆる種類のライブラリの提案を歓迎します。 StackOverflowでまったく同じ質問/programming/4910510/comparing-clustering-trajectories-gps-data-of-xy-points-and-mining-the-dataを開いています。ここでもっと答えが得られると思いました...

7
GISに値ごとのマップを実装する方法
私は最近、カートグラムについていくつかのバックグラウンドリーディングを行ってきましたが、興味深い代替案- アルファによる値 マップにつまずきました。 概念はここでより詳細に説明されており、完全な論文が利用可能です[公然とではなく] [ここ] 2。 indiemaps ブログに実装に関する詳細があります: ...上記のすべてのグラフィックは、テキストエディターと最新の無料のFlex SDKを使用して、ActionScript 3で作成されました... GISパッケージ(ArcGIS?QuantumGIS?)で、そのようなものをどのように実装できますか?またはRとggplot2?それともPython?

2
GeoPandas DataframeをPostGISテーブルに追加しますか?
シンプルなGeoPandasデータフレームがあります。 このGeoDataframeをPostGISテーブルにアップロードしたいと思います。PostGIS拡張機能を使用したデータベースのセットアップは既にありますが、このDataframeをテーブルとして追加できないようです。 私は次を試しました: engine = <> meta = MetaData(engine) eld_test = Table('eld_test', meta, Column('id', Integer, primary_key=True), Column('key_comb_drvr', Text), Column('geometry', Geometry('Point', srid=4326))) eld_test.create(engine) conn = engine.connect() conn.execute(eld_test.insert(), df.to_dict('records'))

3
Gdal:別のラスターでラスターをクリップ
私は、マルチバンドジオティフラスターファイルのバッチを同じ(より小さい)領域にトリミングする簡単なユーティリティを書いています。gdalwarpを使用すると、単一ポリゴンのクリッピングシェープファイルを使用してファイルを簡単にトリミングできます。 gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif ただし、クリップする実際の領域は、最初は常にシェイプファイルではなく、別のジオティフラスターファイルによって定義されます。そのラスターの範囲をクリッピングファイルとして使用できればいいのですが、どうすればよいかわかりません。当然のことながら、以下は機能しません(エラーは発生せず、何も生成されません)。 gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif だから、私の質問は、ラスターを提供する方法はありgdalwarp -cutlineますか?あるいは、別のラスターを使用してラスターをクリップできる別のgdal関数がありますか?これらのどちらも不可能な場合、ラスタの範囲によって定義された単一のポリゴンでシェープファイルを作成する非常に簡単な方法はありますか? このコードは、より広範なpythonスクリプトにラップされるため、コマンドラインのgdalユーティリティまたはgdalのPythonバインディングを使用できます。 補足として、QGISのラスターの範囲をカバーするクリッピングシェープファイルを簡単に作成できることを知っています。簡単な解決策が見つからない場合はそれを行うかもしれませんが、最終的には大規模な自動分析の一部として数百ではないにしても数十の領域でこのユーティリティを使用することになりますので、面倒なことはしたくないと思います非常に簡単な場合でも手動ステップ。
14 python  raster  gdal  clip  gdalwarp 

4
RまたはPythonを使用して大きなラスターをポリラインに変換する最も速い方法は?
グローバルな水域(1ビット値0および1)の大きなラスターファイル(129600 x 64800ピクセル)があり、海と内陸の海岸線を抽出しようとしています。 ArcGISとQGISでラスターからポリラインに変換しようとしましたが、時間がかかります。 誰かがこのタスクのためのより良い/より速い方法(PythonまたはR)またはより良いツールを知っていますか? 更新 R:rasterToContourは高速で正確かもしれませんが、私のような非常に大きなデータセット(8,398,080,000ピクセル)がある場合、非常に大きなRAM(16GB以上)が必要か、Rにハードドライブとそれ以上の処理を強制します年齢もかかります。 Python / GDAL:gdal_poligonizeはポリラインの代わりにポリゴンを作成します 更新2 R rasterToContour:rasterToContourは、必要な結果を提供しません。下の例に示すように、ArcGIS(ラスターからポリゴン、フィーチャからライン)と比較すると、正確なピクセルアウトラインは抽出されません。 rasterToContourの結果 ArcGISの結果 更新3 Python / GDAL:テストデータセットでコマンドラインからgdal_polygonizeをArcGISに対して実行しましたが、結果は非常に明確でした。 gdal:49秒 ArcGIS:1.84秒
14 python  r  performance 

2
Python、GDAL、およびラスター属性テーブルの構築
PythonとGDALを使用してラスター属性テーブルを構築したい整数ラスターがあります。次のように、PythonでGDALラスター属性テーブルを作成できます。 >>> rat = gdal.RasterAttributeTable() ご覧のとおり、これは正常に機能します。 >>> rat <osgeo.gdal.RasterAttributeTable; proxy of <Swig Object of type 'GDALRasterAttributeTableShadow *' at 0x0000000002A53D50> > このようにして作成されたテーブルには行も列もありません。 >>> rat.GetRowCount() 0 >>> rat.GetColumnCount() 0 「値」という列を作成して、ラスターに一意の値を保存します。 >>> rat.CreateColumn("Value", gdalconst.GFT_Integer, gdalconst.GFU_MinMax) 0 これで問題ありません。列数が更新されます。 >>> rat.GetColumnCount() 1 ここで、列を使用するために値(レコード)を列に追加する必要があります。次のように、ラスターのバンドから一意の値のリストを取得できます。 >>> data = band.ReadAsArray(0, 0, dataset.RasterXSize, dataset.RasterYSize) >>> vals = list(numpy.unique(data)) >>> …

1
QGIS Measure Toolから距離を取得していますか?
入力マスクを使用してSpatialiteデータベースにフィードするプラグインを作成しました。オブジェクトの最小/最大次元を表す2つのフィールドがあります。 iface.actionMeasure().trigger()2つのプッシュボタン「メジャー」でメジャーツール()を呼び出した瞬間に、寸法をクリックし、キーボードでフィールドに値を入力します(QLineEdit)。 測定ツールで右クリック(測定の終了)を行った後、値が自動的にフィールド(最小または最大、QLineEdit)にコミットされる可能性はありますか? 測定ツールの呼び出し(動作します) 左クリック:測定を開始 4.一度に:右クリックして、測定ツールの合計値を最小フィールド(QLineEdit)にコミットします。 更新1: この質問をしたある日、メジャーツール(ST_Length(geom))として使用できるラインストリングレイヤーを作成するというアイデアを思いつきました。利点は、そこからデータを操作および取得することを完全に制御できることです。短所は、プロジェクトに追加の層があることです。 ワークフローは次のとおりです。 測定をクリック:編集を切り替え、「機能を追加」を有効にします オブジェクトの最小寸法を表す線ストリングを作成します 変更の確認、ラインストリングの長さの計算(ST_Length(geom))、QLineEditへの長さのコミット ダイアログを閉じてラインストリングを削除(DELETE FROM) しかし、私の実際の質問は残っています。測定ツールから直接距離値を取得する方法はありますか? アップデート2: Jakobの助けを借りて、Measure Tool を閉じるまで、Measure ToolのTotal値でQLineEditを更新できます。次に、値は「0,000 m」に設定されます。私はこれを使用してこの問題を解決しました: def text_changed(str_measure): if str_measure == '0,000 m': pass else: self.min.setText(str_measure) 動作しますが、これが適切な解決策であるかどうかはわかりません。

3
タイルのキャッシュ速度を上げる(TileStache)
TileStacheを使用してベクタータイルを提供しています。すべての設定を思いどおりに行います。データはPostgresに保存されており、VecTilesプロバイダーを使用してGeoJSONタイルを提供しています。 すべてのタイルをキャッシュして、タイルの配信を高速化したい。私はtilestache-seed.pyを使用してキャッシュをシードしています。複数のマシンでtilestache-seedを実行しています。Tilestache-seedはズームレベル13まで本当にうまく機能しましたが、その後、タイルをキャッシュするには時間がかかりすぎています。ズームレベル16の場合、キャッシュする5023772タイルがあり、各マシンで1日あたり100k〜200kのタイルしか取得できません。 タイルキャッシュを高速化するにはどうすればよいですか?tilestache-seed.pyを微調整してシードを高速化する方法はありますか? 更新:テーブルに空間インデックスを構築しようとしました(ジオメトリカラムとwhere句でデータをフィルタリングするために使用されるカラム)。それでも、タイルスピードの大幅な向上は見られませんでした。このレートでは、ズーム17のみで1か月かかりますが、この時間はズーム21に向かって指数関数的に増加するだけです。 更新2:マテリアライズドビューも作成しようとしましたが、パフォーマンスに目に見える変化はないため、データベースの最適化は機能していません。tilestache-seed.py自体を最適化するか、タイルをキャッシュする新しい方法を考案する必要があると思います。 ハードウェア情報 8つの異なるPCでキャッシングプロセスを実行しています。1つは32GB RAMを搭載したi7で、もう1つは4GB RAMを搭載したi3ですが、どちらもほぼ同じキャッシュ速度を提供します

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 …

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