Python创建带预定义键无值的嵌套字典(GeoJSON场景)
解决GeoJSON嵌套空字典构建与
type字段报错问题 嘿,我完全懂你现在的困境——为了作业要把建筑的几何形状和属性塞进GeoJSON结构里,想先搭好只有键的空嵌套框架再填值,但卡在了结构搭建上,还在type字段出报错对吧?
先搞清楚GeoJSON的核心结构规范
首先得明确:GeoJSON的type字段是有严格取值要求的,这大概率是你报错的原因!合法的type值包括FeatureCollection(用来装多个要素)、Feature(单个地理要素,比如一栋建筑)、Point/Polygon/MultiPolygon(几何类型)这些,不能随便写自定义值,否则会不符合GeoJSON规范,也会导致后续处理报错。
构建仅含键结构的嵌套空字典
下面直接给你对应需求的空结构模板,完全符合GeoJSON标准,你可以直接用:
# 1. 顶层用FeatureCollection(适合存多栋建筑) geojson_template = { "type": "FeatureCollection", "features": [] # 这个列表用来后续追加单个建筑的Feature } # 2. 单个建筑的Feature空模板(每次新增建筑时复制这个模板填充) empty_building_feature = { "type": "Feature", "geometry": { "type": "", # 后续填Polygon/MultiPolygon等几何类型 "coordinates": [] # 后续填对应坐标数组 }, "properties": {} # 后续填建筑属性:楼层、名称、用途等 }
怎么填充值并追加数据
有了空结构后,你可以通过复制模板、填充字段,再用.append()加到顶层结构里:
# 示例:填充一栋教学楼的信息 classroom_building = empty_building_feature.copy() # 复制模板避免破坏原空结构 # 填充几何信息(比如一个多边形建筑轮廓) classroom_building["geometry"]["type"] = "Polygon" classroom_building["geometry"]["coordinates"] = [ [116.400, 39.910], [116.401, 39.910], [116.401, 39.909], [116.400, 39.909], [116.400, 39.910] # 多边形要闭合,首尾坐标一致 ] # 填充属性信息 classroom_building["properties"] = { "name": "第一教学楼", "floor_count": 6, "construction_year": 2005 } # 把这个建筑追加到GeoJSON的features列表里 geojson_template["features"].append(classroom_building)
为啥之前type字段报错?
大概率是这两个原因:
- 你给
type写了GeoJSON不允许的自定义值(比如写成Building而不是Feature/Polygon) - 语法错误:比如键名没加引号,或者字典结构嵌套时少了括号
按照上面的模板来,type字段用标准取值,结构就不会有问题啦!
内容的提问来源于stack exchange,提问作者Graven
相关产品推荐
相关产品推荐

