Pythonを使用したシェープファイルの簡単なテーマ別マッピング?


37

ArcGIS / ArcPyを使用せずにPythonで地理データを視覚化し、地図を作成したいと思います。

インターネットで、Pythonを使用して主題図を作成する方法を見つけました。

私が試したコードは次のとおりです。

import shpUtils
import matplotlib.pyplot as plt

shpRecords = shpUtils.loadShapefile('C:\\Users\\shapefile.shp')

for i in range(0,len(shpRecords)):
    x = []
    y = []
    for j in range(0,len(shpRecords[i]['shp_data']['parts'][0]['points'])):

    tempx = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['x'])
    tempy = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['y'])
    x.append(tempx)
    y.append(tempy)
    plt.fill(x,y)

plt.axis('equal')
plt.title("Testing")
plt.show()

ただし、これを実行すると、ランダムな色が表示されます。

シェープファイルの特定の列を視覚化する場合、同様のコードを使用してこれを実装するにはどうすればよいですか?

これは、彼が色の使用法についてのみ議論している上記のリンクでは非常に不明確です...

デカルトPySALなど、これを実現するためにおそらく追加のモジュールが必要でしょうか?

回答:


62

ArcPyは知りませんが、シェープファイルとラスターをPythonで何年も使用しています

  1. Pythonでシェープファイルを処理するために、のような多くのモジュールがありますOSGEO / OGRフィオナPysalまたはPyshpshpUtilsは、見て、他の人にそれらの一つではなく、最も使用されている)は、PyPI:GISとgis.stackexchange上の例と上の多くの例Web(英語だけでなく)。それらのほとんどは、ArcPy(またはarcgisscripting)よりもずっと古いです...
  2. ラスターの処理には、標準のosgeo / gdalを使用できます
  3. 地理空間ジオメトリを処理するために、そこにある見栄え
  4. ジオメトリをプロットするために使用できるmatplotlibのを、おそらくデカルト、エリアのmatplotlibのの「延長」するだけでなく、多くの、多くの他のモジュールを参照してください プロット:は、PyPIのようにしてモジュールをmayavi(もmatplotlibの)3D表現について
  5. mapnikのようなモジュールもあり 、1)シェープファイルを読み取り、4)モジュールPycairoでプロットする可能性を直接提供します。

その後は、GISのようになります。

  • モジュール1)を使用して、必要に応じて、シェイプファイルを開いて保存し、numpyやscipyなどの他のモジュールで処理を実行します。
  • shapelyを使用して、幾何学的オブジェクト(バッファーなど)の操作と分析を行うことができます。
  • matplotlibを使用してジオメトリをプロットできますが、matplotlibは何をプロットしたいかを知りません。プロットする対象(属性など)と方法を指定するのは、モジュール1)または3)の作業です。

シェープファイルの特定の列を視覚化する場合、これをコードに実装するにはどうすればよいですか?

そのため、matplotibおよびその他のモジュールを学習する必要があります。ArcPyを学ぶ必要がありますが、それは同じです...(特にmatplolibについては、Web上に優れたチュートリアルがたくさんあります。ArcPyは純粋なPythonなので簡単です)。

Pythonのみを使用したいくつかの例

ここに画像の説明を入力してください

属性に基づいた色の地質図(ポリゴンシェープファイル)

ここに画像の説明を入力してください

属性に基づいた色の3Dポイント(PointZシェープファイル)

ここに画像の説明を入力してください

DEMおよびDEMサーフェス上にドレープされたラスター上の3Dポイント(zを属性として持つポイントシェープファイル)および3Dライン(PolyLineZシェープファイル)。

ここに画像の説明を入力してください

元のシェープファイル(ポリラインシェープファイル)の属性(地質構造=断面)に基づいたZ値と色を持つ地形プロファイル

ここに画像の説明を入力してください

モジュールMayavi2を使用したDEM(GeoTIFF)

ここに画像の説明を入力してください

モジュールvisvisを使用したDEM(ESRI ascii grid、.asc)およびPointシェープファイル(属性としてzを使用)

ここに画像の説明を入力してください

ボアホール(属性に基づいた色のポリラインZの3Dバッファー(地層)、ポイントシェープファイルからのモジュールnumpyおよびmatplotlib(属性としてzを使用)で計算されたグリッドサーフェス、モジュールvisvisで視覚化


16

シェイプファイルをすばやく視覚化する場合も同様の問題があり、Matplotlibの方法はこのような小さなタスクを達成するのに非常に長い方法であることが常にわかっていました。代わりに、「Python Geographic Visualizer」モジュール、または略してGeoVis を開発しました。更新: v0.2.0には多くの新機能が追加されました。

シェープファイルを視覚化するのは簡単ではありません。

import geovis
geovis.ViewShapefile("C:/yourshapefile.shp")

出来上がり、マップはTkinterウィンドウに画像としてポップアップ表示され、マップを画像ファイルに保存することもできます。、スタイリング着色、およびマップに複数の層を追加することも可能であり、最新バージョンであなたもできる属性に基づいて分類し、ズーム特定の地域にして。下の地図では、ジオビスが約5分で世界中のGADM州にロードされ、カテゴリ別に色付けされています。こちらからGeoVisダウンロードできます。GeoVisの使用方法については、こちらをご覧ください。

ここに画像の説明を入力してください

目的は、使いやすさとインストールのしやすさです。GeoVisは、組み込みのTkinter Canvasをレンダラーとして使用できるため、Pythonを使用し、他のモジュールを必要としない人なら誰でも使用できます。ただし、Aggdraw、PIL、またはPyCairoを持っているか入手することを強くお勧めします。これらは、レンダラーとしても使用でき、はるかに高速で高品質です。

バックドローは、シェープファイルを緯度/経度座標系で投影解除する必要があることです。まだ投影または変換を処理していません。


14

このトピックを扱っている多くのチュートリアルに出会ったので、共有したいと思いました。

Rの使用を検討することもできます。Rで魅力的なコロプレスマップを作成する方法は?


1

2019年、Pythonのシェープファイルから主題図を作成する最も簡単な方法は、geopandasです。

ドキュメントの例:http : //geopandas.org/mapping.html

import geopandas
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world['gdp_per_cap'] = world.gdp_md_est / world.pop_est
world.plot(column='gdp_per_cap')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.