Python+GIS-shapefile転送geojson(コアコードは2行のみ)
背景
geojsonは地図可視化システムで最もよく使われる地理データフォーマットであり、ほとんどの主流の地図可視化ライブラリまたはフレームワークはgeojsonデータのロードをサポートしている.geojsonデータは通常他のデータから変換され、最も一般的なのはESRIShpfileデータ転送geojsonであり、専門GISソフトウェアの中でQGIS、FMMなどは両方の相互変換をサポートしているが、これらのソフトウェアは膨大すぎるだけでなく、専門性が強く、GIS専門としての私も使いたくない.以前javaで両者変換のツールを書いたことがありますが、コードはあまりにも煩雑です.pythonのgeopandasライブラリが使用されるまで.
ステップ
1.geopandasのインストール
最も簡単な方法:
pipを使用してインストールすることもできますが、他の依存ライブラリを事前にインストールする必要があります(numpy,pandas,shapely,fiona,pyprojなど).これは後述しません.
2.コード
2つのパラメータ、
3.拡張
上記のコードはshapefileをgeojsonに変換します.同様にshapefileまたはgeojsonを他のフォーマットに変更することもできます.例えば、geojsonをshapefileに変更するには、driverパラメータを
geojsonにはスペースリファレンスがない場合があります.スペースリファレンスを指定する必要があります.
driverがサポートするデータ型は、次のコードで表示できます.
geojsonは地図可視化システムで最もよく使われる地理データフォーマットであり、ほとんどの主流の地図可視化ライブラリまたはフレームワークはgeojsonデータのロードをサポートしている.geojsonデータは通常他のデータから変換され、最も一般的なのはESRIShpfileデータ転送geojsonであり、専門GISソフトウェアの中でQGIS、FMMなどは両方の相互変換をサポートしているが、これらのソフトウェアは膨大すぎるだけでなく、専門性が強く、GIS専門としての私も使いたくない.以前javaで両者変換のツールを書いたことがありますが、コードはあまりにも煩雑です.pythonのgeopandasライブラリが使用されるまで.
ステップ
1.geopandasのインストール
最も簡単な方法:
conda install geopandas
pipを使用してインストールすることもできますが、他の依存ライブラリを事前にインストールする必要があります(numpy,pandas,shapely,fiona,pyprojなど).これは後述しません.
2.コード
import geopandas as gpd
def shp2gj(input_file, output_file):
data = gpd.read_file(input_file)
data.to_file(output_file, driver="GeoJSON", encoding='utf-8') # utf-8 ,
print('Success: File '+input_file.split('\\') [-1] + ' conversion completed')
2つのパラメータ、
input_file
(入力ファイル、xxx.shp)、output_file
(出力ファイル、xxx.json).主なコードは2行しかありません:データを読む(read_file)、データを書く(to_file);データを書くときはdriver="GeoJSON"
を指定すればいい.中国語の文字化けしを防ぐため、encoding='utf-8'
を指定します.3.拡張
上記のコードはshapefileをgeojsonに変換します.同様にshapefileまたはgeojsonを他のフォーマットに変更することもできます.例えば、geojsonをshapefileに変更するには、driverパラメータを
ESRI Shapefile
に変更するだけです.data = gpd.read_file(r'yourPath\xxx.json')
data.to_file(r'yourPath\xxx.shp', driver="ESRI Shapefile", encoding='utf-8') # utf-8 ,
geojsonにはスペースリファレンスがない場合があります.スペースリファレンスを指定する必要があります.
import geopandas as gpd
from fiona.crs import from_epsg
data = gpd.read_file(r'yourPath\xxx.josn')
data.crs = from_epsg(4326) # 4326(WGS84 )
data.to_file(r'yourPath\xxx.shp', driver="ESRI Shapefile", encoding='utf-8')
driverがサポートするデータ型は、次のコードで表示できます.
>>> import fiona
>>> fiona.supported_drivers
{'ESRI Shapefile': 'raw', 'ARCGEN': 'r', 'PCIDSK': 'r', 'SUA': 'r',
'DGN': 'raw', 'SEGY': 'r', 'MapInfo File': 'raw', 'GeoJSON': 'rw', 'PDS': 'r',
'FileGDB': 'raw', 'GPX': 'raw', 'DXF': 'raw', 'GMT': 'raw', 'Idrisi': 'r',
'GPKG': 'rw', 'OpenFileGDB': 'r', 'BNA': 'raw', 'AeronavFAA': 'r',
'GPSTrackMaker': 'raw'}