【发布时间】:2012-05-08 12:43:49
【问题描述】:
我一直致力于为用户存储位置的网络项目。该项目目前使用 MySql 5.5 和 JPA 2 来映射关系数据库,并使用 EJB 3.1 作为中间层。我在 MySql 中以 Decimal 数据类型存储经度和纬度数据。
我想扩展项目,以便用户可以在地图上搜索他/她标记的位置附近的点(GPS 坐标)(通过使用 Google Map API 3)。
在开始转换或更改项目中的组件之前,我需要一些提示和建议。如果可能,请提供教程以及如何实现更改以及使用哪些工具(库、开发工具等)。这是我的问题。
- 我能否在 MySql 中使用 Spatial 扩展(使用 Point 等数据类型)并将其映射到 JPA 2 支持的实体(如 DataNucleus 库,如果 JPA 2 支持的话)。重量轻,可以通过持久层自行持久化。
- 迁移到 PostGIS 和 Postgres(它们似乎有更好的空间支持)是否会更好,因为更改数据库和使用 hibernate 需要付出所有的痛苦和努力。 Netbeans 具有 Hibernate 支持,但是在尝试使用 JDBC for PostGis 时,我偶然发现了一些问题。如果我走这条路,需要一个很好的教程才能开始。
- 使用已经就位的基础设施并计算与哺乳期 A 和 B 的距离。类似于 Jan Philip Matuschek 在本文中所做的方法
请原谅我对问题进行了聚类。 问候克里斯
【问题讨论】:
-
我更加沉浸在其中。我现在所知道的是,我不仅需要空间分析。但我需要一个具有地理支持的数据库,而且我对纯笛卡尔计算不太感兴趣。由于我将收集的职位将在更大的区域范围内。 PostGIS支持WGS 84,功能不多。但它有我现在需要的一次。当我有一个工作原型时,我会报告。
-
如果 MySQL 支持地理(大地)坐标,我还没有找到任何东西。
-
我不知道 MySQL 对地理的支持,但这在 PostGIS 中都是可能的。 PostGIS 有一个“GISTree”索引,可让您索引您的地理(Oracle 中的 r-tree),从而实现更快的地理查询。您是否计划做“区域”(您可以使用纬度/经度定义多边形,然后搜索例如,哪些 DB 点位于该多边形中),或者您打算“最接近”或“距离该点 2 英里”?
标签: mysql hibernate postgresql jpa-2.0 postgis