判断是否在中国
osm是一套开源的地图格式,在www.openstreetmap.org可以进行开放式的编辑。
目前的数据25G,因为是XML based,解压缩以后300多G,我需要抽取出来其中中国区域的地理信息,粗略浏览了一下格式,似乎没有发现有类似行政区划的node,grep了一下China关键字,大部分来自上传用户的user字段,并不能作为判断地理位置的真实依据——这个疯子有可能拿着GPS在法国小镇乱逛然后给自己起名xxChina提交。
花了一上午的时间在300多G的xml里面grep,还是没有找到可以纲举目张的列出所有中国地区地理信息的字段,在行政区划方面倒是有boundary=administrative + admin_level=2 (行政区域 + 国家)用来表示这个区域是一个国家,但是数据是似乎也不构成树形关系。
所以可能还是要延续之前的思路,先用GoogleAPI拿到中国疆界的经纬度的点集(尽可能在中国外沿),求凸包,然后判断点是否在凸包多边形之内。
其实如果用GoogleAPI采集的点集足够规则也不需要求凸包了,直接判断点P是否在多边形之内就好了,在点集的区域范围内,往朝任意方向做一条射线,如果边界交点为偶数,那么点在多边形之外,否则在多边形内。如果射线和点P与任意一个顶点的连线重合,重新计算。
目前的数据25G,因为是XML based,解压缩以后300多G,我需要抽取出来其中中国区域的地理信息,粗略浏览了一下格式,似乎没有发现有类似行政区划的node,grep了一下China关键字,大部分来自上传用户的user字段,并不能作为判断地理位置的真实依据——这个疯子有可能拿着GPS在法国小镇乱逛然后给自己起名xxChina提交。
花了一上午的时间在300多G的xml里面grep,还是没有找到可以纲举目张的列出所有中国地区地理信息的字段,在行政区划方面倒是有boundary=administrative + admin_level=2 (行政区域 + 国家)用来表示这个区域是一个国家,但是数据是似乎也不构成树形关系。
所以可能还是要延续之前的思路,先用GoogleAPI拿到中国疆界的经纬度的点集(尽可能在中国外沿),求凸包,然后判断点是否在凸包多边形之内。
其实如果用GoogleAPI采集的点集足够规则也不需要求凸包了,直接判断点P是否在多边形之内就好了,在点集的区域范围内,往朝任意方向做一条射线,如果边界交点为偶数,那么点在多边形之外,否则在多边形内。如果射线和点P与任意一个顶点的连线重合,重新计算。
热门话题 · · · · · · ( 去话题广场 )
- 中年人感悟特别多308篇内容 · 94.3万次浏览
- 想做的事,别等“以后”1.0万+篇内容 · 327.7万次浏览
- 重新养一遍自己,可真好啊1297篇内容 · 150.1万次浏览
- 为什么人生不需要过度努力594篇内容 · 84.3万次浏览
- 第78届戛纳国际电影节164篇内容 · 67.1万次浏览
- 当我和母亲谈起女性主义70篇内容 · 23.0万次浏览
- 我发现了食物最完美的吃法16篇内容 · 4.9万次浏览
- 聊聊让你印象深刻的路人31篇内容 · 9488次浏览
万老师,你又在搞什么奇奇怪怪的东西?难道是绘制中国瘦高白美的地理分布。。。
我终于发现有个包,名字叫China。。。