• 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))

  • 相关阅读:
    git版本回退问题记录
    git add的各种情况分类
    代码优化积累【持续更新】
    package.json和package-lock.json的区别
    new Date在IE下面兼容问题
    git fetch和git pull的区别
    Node.Js的热更新服务——supervisor
    springboot 指定启动环境
    java后台解决上传图片翻转90的问题,有demo,经过测试可用
    intellij IDEA 实用快捷键
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/9690862.html
Copyright © 2020-2023  润新知