<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
GeoJson是用json的語法表達和儲存地理資料,可以說是json的子集。
GeoJson以鍵值對的形式儲存原有物件的資訊,具有輕量化、易解析等優點。
GeoJson包括的地理要素有Point(點)、 MultiPoint(多點)、 LineString(線)、MultiLineString(多線)、 Polygon(面)、 MultiPolygon(多面)、 GeometryCollection(幾何集合)
這些地理要素包括在geometry的type屬性中,並且不同的type具有不同的coordinates值。更多的GeoJson相關內容可參考RFC7946標準。
{ "type": "MultiPoint", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] } { "type": "MultiPolygon", "coordinates": [ [ [ [102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0] ] ], [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ], [ [100.2, 0.2], [100.2, 0.8], [100.8, 0.8], [100.8, 0.2], [100.2, 0.2] ] ] ] }
核心程式碼:geopandas.GeoSeries 和out_data.to_file
import geopandas as gpd def shp2geojson_gpd(shp_file, geojson_file): """ 將shapefile格式的檔案轉化為geojson :param shp_file: 需要轉換的shapefile檔名,投影資訊可以缺失,也可以指定 :param geojson_file: 轉換輸出的geojson檔名 """ if os.path.exists(geojson_file): os.remove(geojson_file) out_data = gpd.read_file(shp_file) crs = out_data.crs out_data = gpd.GeoSeries(out_data.geometry, crs=crs) out_data.to_file(geojson_file, driver='GeoJSON', encoding="utf-8") print("successfully convert shapefile to geojson")
使用geopandas轉換的時候兩行核心程式碼即可搞定,簡單粗暴。但是在實踐過程中發現,採用geopandas轉換後的GeoJson檔案並沒有保留shapefile中的屬性properities資訊,如area, name等,如下圖所示:
import gdal import ogr import os def shp2geojson_gdal(shp_file, geojson_file): gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES") gdal.SetConfigOption("SHAPE_ENCODING", "GBK") src_ds = ogr.Open(shp_file) src_layer = src_ds.GetLayer(0) # 建立結果Geojson baseName = os.path.basename(geojson_file) dst_driver = ogr.GetDriverByName('GeoJSON') dst_ds = dst_driver.CreateDataSource(geojson_file) if dst_ds.GetLayer(baseName): dst_ds.DeleteLayer(baseName) dst_layer = dst_ds.CreateLayer(baseName, src_layer.GetSpatialRef()) dst_layer.CreateFields(src_layer.schema) dst_feat = ogr.Feature(dst_layer.GetLayerDefn()) # 生成結果檔案 for feature in src_layer: dst_feat.SetGeometry(feature.geometry()) for j in range(feature.GetFieldCount()): dst_feat.SetField(j, feature.GetField(j)) dst_layer.CreateFeature(dst_feat) del dst_ds del src_ds print("successfully convert shapefile to geojson")
結果包含原始shapefile檔案中的屬性資訊:
到此這篇關於Python shapefile轉GeoJson的2種方式的文章就介紹到這了,更多相關Python shapefile轉GeoJson內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45