modifyGeoJSON
Posted ParamousGIS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了modifyGeoJSON相关的知识,希望对你有一定的参考价值。
from osgeo import ogr
import json
from geojson import loads, dumps, Feature, FeatureCollection
from shapely.geometry import shape, Point, LineString
‘‘‘
shp_driver = ogr.GetDriverByName(‘ESRI Shapefile‘)
shp_dataset = shp_driver.Open(r‘../geodata/schools.shp‘)
shp_layer = shp_dataset.GetLayer()
shp_srs = shp_layer.GetSpatialRef()
‘‘‘
filePathNE = r‘D:/Project/javascript/LeafletJS/WebGISDemoAngularJS/data/ne.geojson‘
filePathRegion = r‘D:/Project/JavaScript/LeafletJS/WebGISDemoAngularJS/data/region.geojson‘
def readGeoJSONFileToGeoJSON(jsonfile):
with open(jsonfile) as jsonFile:
jsonStr = jsonFile.read()
featureCollection = loads(jsonStr)
#print(dumps(featureCollection))
return featureCollection
def readGeoJSONFileToJSONObject(jsonfile):
with open(jsonfile) as jsonFile:
jsonObject = json.load(jsonFile)
return jsonObject
#
def JSONObjectToShape(jsonObject):
geometryList = []
for feature in jsonObject[‘features‘]:
#将GeoJSON中的Geometry转化成shapely(Geos)中的Geometry
# create shapely shape from geojson
shapeObj = shape(feature[‘geometry‘])
geometryList.append(shapeObj)
#feature[‘geometry‘] = None
return geometryList
jsonObjectNE = readGeoJSONFileToJSONObject(filePathNE)
geometryNEList = JSONObjectToShape(jsonObjectNE)
jsonObjectRegion = readGeoJSONFileToJSONObject(filePathRegion)
geometryRegionList = JSONObjectToShape(jsonObjectRegion)
for indexRegion, region in enumerate(geometryRegionList):
for indexNE, ne in enumerate(geometryNEList):
isIntersect = region.intersects(ne)
if isIntersect:
featureNE = jsonObjectNE[‘features‘][indexNE]
featureRegion = jsonObjectRegion[‘features‘][indexRegion]
featureNE[‘properties‘][‘region‘] = featureRegion[‘properties‘][‘name‘]
#if hasattr(featureRegion[‘properties‘], ‘count‘):
if featureRegion[‘properties‘].get(‘count‘, None) is not None:
featureRegion[‘properties‘][‘count‘] = featureRegion[‘properties‘][‘count‘] + ‘,‘ + str(featureNE[‘properties‘][‘count‘])
else:
featureRegion[‘properties‘][‘count‘] = str(featureNE[‘properties‘][‘count‘])
print(json.dumps(jsonObjectRegion))
以上是关于modifyGeoJSON的主要内容,如果未能解决你的问题,请参考以下文章