Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ok_geo.csv导出的数据的polygon数据为什么不是闭合的,而且里面的 ; 来分割数据,是分割成什么了? #45

Open
l-xue-yu opened this issue Jul 10, 2024 · 5 comments

Comments

@l-xue-yu
Copy link

因为数据不是闭合的所以无法创建地理空间索引,

@xiangyuecn
Copy link
Owner

README里面有polygon字段格式说明,自行解析可以参考一下;有;的是MultiPolygon,多个Polygon环组成

## 【字段】ok_geo.csv - 坐标边界表
此表为坐标和行政区域边界范围数据表,可[在线测试预览](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-echarts.html);此表含省市区三级不含第四级,如需乡镇级坐标边界数据[请到此下载](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-level4.html);因为数据文件过大(130M+),所以分开存储。
由于边界数据的解析比较复杂,请参考[src/map_geo_格式化.js](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/%E5%9D%90%E6%A0%87%E5%92%8C%E8%BE%B9%E7%95%8C/map_geo_%E6%A0%BC%E5%BC%8F%E5%8C%96.js)内的SQL Server的解析语句,或者使用 [AreaCity-Geo格式转换工具软件](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/AreaCity-Geo-Transform-Tools.html) 直接导入数据库,或者转换成`shp``geojson``sql`格式。
如果需要查询坐标对应的城市、查询城市或下级的边界数据,可下载 [AreaCity-Query-Geometry](https://github.com/xiangyuecn/AreaCity-Query-Geometry) Java开源程序进行高性能的查询,内存占用低(1秒可查1万个以上坐标对应的城市信息)。
字段|类型|描述
:--:|:--:|--
id|int|和`ok_data_level*.csv`表中的`ID`相同,通过这个`ID`关联到省市区具体数据,`map_geo_格式化.js`中有数据合并SQL语句
pid|int|上级ID
deep|int|层级深度;0:省,1:市,2:区
name|string|`如:罗湖区`,城市完整名称
ext_path|string|`如:广东省 深圳市 罗湖区`,为省市区三级完整名称,中间用空格分隔
geo|string|城市中心坐标,高德地图`GCJ-02`火星坐标系。格式:"lng lat" or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到坐标信息
polygon|string|行政区域边界,高德地图`GCJ-02`火星坐标系。格式:"lng lat,...;lng lat,..." or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到边界信息;存在多个地块(如海岛、飞地)时用`;`分隔,每个地块的坐标点用`,`分隔(如果某个地块中需要抠除一个孔洞小地块会存在`~`分隔符,目前暂无),特别要注意:多个地块组合在一起可能是[MULTIPOLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/multipolygon?view=sql-server-2014)或者[POLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/polygon?view=sql-server-2014),需用工具进行计算和对数据进行验证

数据库里面可以用 ST_IsValid 检查解析后的数据是否有效;自己解析比较复杂,用库里面提供的转换工具可以很方便的导入到数据库里面

@l-xue-yu
Copy link
Author

README里面有polygon字段格式说明,自行解析可以参考一下;有;的是MultiPolygon,多个Polygon环组成

## 【字段】ok_geo.csv - 坐标边界表
此表为坐标和行政区域边界范围数据表,可[在线测试预览](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-echarts.html);此表含省市区三级不含第四级,如需乡镇级坐标边界数据[请到此下载](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-level4.html);因为数据文件过大(130M+),所以分开存储。
由于边界数据的解析比较复杂,请参考[src/map_geo_格式化.js](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/%E5%9D%90%E6%A0%87%E5%92%8C%E8%BE%B9%E7%95%8C/map_geo_%E6%A0%BC%E5%BC%8F%E5%8C%96.js)内的SQL Server的解析语句,或者使用 [AreaCity-Geo格式转换工具软件](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/AreaCity-Geo-Transform-Tools.html) 直接导入数据库,或者转换成`shp``geojson``sql`格式。
如果需要查询坐标对应的城市、查询城市或下级的边界数据,可下载 [AreaCity-Query-Geometry](https://github.com/xiangyuecn/AreaCity-Query-Geometry) Java开源程序进行高性能的查询,内存占用低(1秒可查1万个以上坐标对应的城市信息)。
字段|类型|描述
:--:|:--:|--
id|int|和`ok_data_level*.csv`表中的`ID`相同,通过这个`ID`关联到省市区具体数据,`map_geo_格式化.js`中有数据合并SQL语句
pid|int|上级ID
deep|int|层级深度;0:省,1:市,2:区
name|string|`如:罗湖区`,城市完整名称
ext_path|string|`如:广东省 深圳市 罗湖区`,为省市区三级完整名称,中间用空格分隔
geo|string|城市中心坐标,高德地图`GCJ-02`火星坐标系。格式:"lng lat" or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到坐标信息
polygon|string|行政区域边界,高德地图`GCJ-02`火星坐标系。格式:"lng lat,...;lng lat,..." or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到边界信息;存在多个地块(如海岛、飞地)时用`;`分隔,每个地块的坐标点用`,`分隔(如果某个地块中需要抠除一个孔洞小地块会存在`~`分隔符,目前暂无),特别要注意:多个地块组合在一起可能是[MULTIPOLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/multipolygon?view=sql-server-2014)或者[POLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/polygon?view=sql-server-2014),需用工具进行计算和对数据进行验证

数据库里面可以用 ST_IsValid 检查解析后的数据是否有效;自己解析比较复杂,用库里面提供的转换工具可以很方便的导入到数据库里面

我想把ok_geo.csv数据导入到mongodb,但是发现polygon的数据有的有;分号分割,有的没有分割。我按照;分割,再分割结果发现,polygon的数据不是环所以没法用空间索引。请问下是解析分割错了么?如果是由;分号的是multiPolgon,没有;的是polygon,但是我发现分割出来的都不是环数组。

@l-xue-yu
Copy link
Author

README里面有polygon字段格式说明,自行解析可以参考一下;有;的是MultiPolygon,多个Polygon环组成

## 【字段】ok_geo.csv - 坐标边界表
此表为坐标和行政区域边界范围数据表,可[在线测试预览](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-echarts.html);此表含省市区三级不含第四级,如需乡镇级坐标边界数据[请到此下载](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/geo-level4.html);因为数据文件过大(130M+),所以分开存储。
由于边界数据的解析比较复杂,请参考[src/map_geo_格式化.js](https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/blob/master/src/%E5%9D%90%E6%A0%87%E5%92%8C%E8%BE%B9%E7%95%8C/map_geo_%E6%A0%BC%E5%BC%8F%E5%8C%96.js)内的SQL Server的解析语句,或者使用 [AreaCity-Geo格式转换工具软件](https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/assets/AreaCity-Geo-Transform-Tools.html) 直接导入数据库,或者转换成`shp``geojson``sql`格式。
如果需要查询坐标对应的城市、查询城市或下级的边界数据,可下载 [AreaCity-Query-Geometry](https://github.com/xiangyuecn/AreaCity-Query-Geometry) Java开源程序进行高性能的查询,内存占用低(1秒可查1万个以上坐标对应的城市信息)。
字段|类型|描述
:--:|:--:|--
id|int|和`ok_data_level*.csv`表中的`ID`相同,通过这个`ID`关联到省市区具体数据,`map_geo_格式化.js`中有数据合并SQL语句
pid|int|上级ID
deep|int|层级深度;0:省,1:市,2:区
name|string|`如:罗湖区`,城市完整名称
ext_path|string|`如:广东省 深圳市 罗湖区`,为省市区三级完整名称,中间用空格分隔
geo|string|城市中心坐标,高德地图`GCJ-02`火星坐标系。格式:"lng lat" or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到坐标信息
polygon|string|行政区域边界,高德地图`GCJ-02`火星坐标系。格式:"lng lat,...;lng lat,..." or "EMPTY",少量的EMPTY(仅台湾的城市、国外)代表此城市没有抓取到边界信息;存在多个地块(如海岛、飞地)时用`;`分隔,每个地块的坐标点用`,`分隔(如果某个地块中需要抠除一个孔洞小地块会存在`~`分隔符,目前暂无),特别要注意:多个地块组合在一起可能是[MULTIPOLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/multipolygon?view=sql-server-2014)或者[POLYGON](https://docs.microsoft.com/zh-cn/sql/relational-databases/spatial/polygon?view=sql-server-2014),需用工具进行计算和对数据进行验证

数据库里面可以用 ST_IsValid 检查解析后的数据是否有效;自己解析比较复杂,用库里面提供的转换工具可以很方便的导入到数据库里面

是不是要给每个polygon组读完后在末尾加上第一个经纬度坐标,来组成一个环?

@xiangyuecn
Copy link
Owner

对,每个环结尾要加上这个环开头第一个坐标

@Subilan
Copy link

Subilan commented Sep 19, 2024

@l-xue-yu 感谢你提出了这个问题,我今天也有一样的疑问。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants