我们有一个CSV格式的数据库,所有县(美国)及其边界由SRID和MULTIPOLYGON定义。我怎样才能确定任何给定的坐标(十进制经度和纬度),它属于哪个县。我们计划使用MySQL来存储数据并执行查询。如何确定一个坐标是否在mutilpolygon内?
1
A
回答
-1
也许将有所帮助。
3
如果您的形状繁多复杂,最好使用空间数据库。 PostGIS是免费的,并且可以在大多数MySQL平台上运行。空间数据库具有用于存储多边形的空间数据类型,包括查询数据库的点是否在多边形中的空间查询以及使所有事情都合理高效的空间索引。
OTOH,如果您只处理相当少量的相当简单的多边形,则可以使用普通数据库进行管理。我已经做了一次。我的方法:
有一个多边形表。每个多边形记录包含主键,无论您需要用每个多边形存储哪些信息,以及多边形的边界框 - 最大值和最小值x和y值。
多边形的点存储在点表中,该点表是多边形的子点。每个点记录都包含它所属的多边形的主键,序列号以及x和y值。
要查找可能包含点的多边形,可以查询多边形表,查找可能包含点的多边形 - 点位于其边界框内的多边形。将这些候选多边形读入内存,并检查每个多边形是否包含该点。
有很多算法。 http://en.wikipedia.org/wiki/Point_in_polygon
我使用了光线投射法,因为它很简单。在任何方向上从点到无穷大绘制一条线,并计算您截取的线段的数量。如果你穿过一个奇数,你的观点就在多边形内。
2
尝试地理扩展的MySQL
http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html
虽然在PostGIS的Postgres是一个比较成熟的地理数据库,如果你有选择,我会使用它。
相关问题
- 1. 确定一个坐标是否在另一个的半径内
- 2. 如何确定一个多边形是否在另一个内?
- 3. 计算一个坐标是否在另一个范围内
- 4. C#:如何确定坐标是否在美国大陆?
- 5. Django的 - 确定地理坐标是一个圆圈内
- 6. 如何知道某个x-y坐标是否在矩形内?
- 7. 如何确定一个超链接的坐标在WPF
- 8. 如何确定Task.Run是否在一个循环内完成
- 9. 确定一个线段的坐标
- 10. 检查坐标是否在区域内
- 11. 如何检查一个点(int - 坐标)是否在三角形的斜边内
- 12. 如何找到一个人是否在建筑物内使用GPS坐标
- 13. 如何确定一个点是否位于kml或shape内
- 14. 如何确定一个html标签是否分割成多行
- 15. 如何确定坐标是否在当前可见的地图区域中?
- 16. 在网格中生成坐标在一个圆内的坐标
- 17. 检查坐标是否在预定义的区域内
- 18. 如何确定一个点是否是一个四边形
- 19. 如何确定一个url是否是一个图像?
- 20. 如何知道给定的latlng是否在geojson多边形坐标内
- 21. 如何从一个坐标拖放到另一个坐标C#
- 22. 如何确定堆叠面板内物品的坐标?
- 23. 如何确定一个流是否是在STDIN PHP
- 24. 如何确定一个目录是否在同一分区
- 25. 如何确定GPS是否可用?另外,如何根据GPS坐标确定城市/州/国家?
- 26. 如何在imageMap的精确坐标处插入一个div
- 27. 确定一个点是否在路上
- 28. 确定行是否在一个DataGridView
- 29. Redis或Mongo确定一个数字是否在范围内?
- 30. 确定一个点是否在Raphael.js中的路径元素内