微天气—行政区划数据(二)
前言 此前提到微天气应用程序需要使用到行政区划数据,不过上一章所使用的数据来源于网络,或多或少都可以考虑一下是否还有其他获取的方式,所以也就有了本文的内容。 在这里,将基于全国1:100万基础地理信息数据进行行政区划数据的提取。本文用于记录使用程序实现全国1:100万基础地理信息数据合并的全过程。 当然,本文产生的最重要原因其实并不是受到微天气的启发,更多的是个人想试一试能不能用。 数据说明 全国1:100万公众版基础地理信息数据(2021)覆盖全国陆地范围和包括台湾岛、海南岛、钓鱼岛、南海诸岛在内的主要岛屿及其临近海域,共77幅1:100万图幅,该数据集整体现势性为2019年。数据采用2000国家大地坐标系,1985国家高程基准,经纬度坐标。 为满足广大社会群众对地理信息数据资源的需求,经自然资源部授权,全国地理信息资源目录服务系统提供全国1:100万全图层要素免费下载的服务。下载数据采用1:100万标准图幅分发,内容包括水系、居民地及设施、交通、管线、境界与政区、地貌与土质、植被、地名及注记9个数据集,且保存要素间空间关系和相关属性信息。 💡 提供下载的是矢量数据,不是最终地图,与符号化后的地图再可视化表达上存在一定差异。用户利用此数据编制地图,应当严格执行《地图管理条例》有关规定;编制的地图如需向社会公开的,还应当依法履行地图审核程序。 成果规格 分幅编号及范围 1:100万公众版基础地理信息数据(2021)的图幅总数为77幅,分幅数据按照GB/T 13989-2012《国家基本比例尺地形图分幅和编号》执行。空间存储单元为6°(经差)×4°(纬差)。 坐标系统 平面坐标系: 2000国家大地坐标系。 高程基准:1985国家高程基准。 地图投影:分幅数据采用地理坐标,坐标单位为度。 几何精度 更新后地物点对于附近野外控制点的平面位置和高程中误差符合下表的要求,以两倍中误差值为最大误差。 地物点误差 最小 最大 平面位置 100 500 高程 50 200 现势性 1:100万地形数据现势性与更新使用的数据源的现势性一致,数据整体现势性达到2019年。 成果数据组织 全国1:100万公众版地形数据(2021)内容包括水系、居民地及设施、交通、管线、境界与政区、地貌与土质、植被、地名及注记9个数据集。 数据分层的命名采用四个字符,第一个字符代表数据分类,第二三个字符是数据内容的缩写,第四个字符代表几何类型。 目标 实现分图层合并(处理图幅合并时接边问题) 水系(暂缓) 交通(暂缓) 境界与政区(国、省、市、县) 地名及注记 根据合并后的行政区划与地名注记,制作行政区划数据库 数据库使用PostgreSQL(PostGIS) 设计 图层解析程序 Java程序, 使用GDAL 读取GDB 逻辑 根据《国家基本比例尺地形图分幅和编号》规定可知网格范围,通过网格范围动态生成对应网格的分幅编号,并以该编号进行数据检索。如果命中则根据成果数据组织规格以及相关标准对数据进行解析,如果未命中则跳过,直至网格扫描完毕。 经度:72~138(E),43~53(11) 纬度:0~56(N),A~N(14) 即,网格范围:[43,53] x [A,N] 数据的处理流程可使用责任链模式进行,后续也方便加入其他的处理流程。即,整体的执行框架为策略模式+责任链模式。为统一策略选择模型,在此提出图层定义(LayerDefinition)的概念。 LayerDefinition由如下几个关键要素组成: 图层数据源(LayerSource) driver:驱动,参考java.sql.UnWrapper实现 instance name catalog: schema: table: commonDefinitionKey :常规定义缓存的key fieldDefinitionKey :字段定义缓存的key featureCarrierKey :要素载体缓存的key origin:数据来源(分幅文件路径) scale:比例尺(如:1000000,表示1:1000000) sourceSpatialRef:源坐标系(表现形式可为标准ID、PROJ Text、WKT Text) sinkSpatialRef:目标坐标系(表现形式可为标准ID、PROJ Text、WKT Text) featureCode:要素分类码,对应成果数据组织中的要素分类(如:C、B) name:图层命名,也是图层分类码 layerCode:图层分类码 release:释放格式(比如:WMTS、Shapefile、GDB…) 描述字符为:比例尺:源坐标系:目标坐标系:要素分类码:图层名称:释放格式,在描述字符串中,坐标系仅使用标准ID表示...