mysql - 什么数据库和 java 库用于空间分析?

标签 mysql hibernate postgresql jpa-2.0 postgis

我一直致力于为用户存储位置的 Web 项目。该项目目前使用 MySql 5.5 和 JPA 2 来映射关系数据库,并使用 EJB 3.1 作为中间层。我在 MySql 中以 Decimal 数据类型存储经度和纬度数据。

我想扩展项目,以便用户可以在他/她在 map 上标记的位置附近搜索点(GPS 坐标)(通过使用 Google Map API 3)。

在开始转换或更改项目中的组件之前,我需要一些提示和建议。如果可能,请提供教程以及如何实现更改以及使用什么工具(库、开发工具等)。这是我的问题。

  1. 我能否在 MySql 中使用空间扩展(使用点等数据类型)并将其映射到 JPA 2 支持的实体(如 DataNucleus 库,如果它们受 JPA 2 支持)。它们重量轻,可以通过持久层 self 持久化。
  2. 在经历了更改数据库和使用 hibernate 所需的所有痛苦和努力后,迁移到 PostGIS 和 Postgres(它们似乎具有更好的空间支持)是否更好? Netbeans 支持 Hibernate,但在尝试使用 JDBC for PostGis 时,我遇到了问题。如果我走这条路,需要一个很好的教程来开始。
  3. 使用已经就位的基础设施并计算与哺乳期 A 和 B 的距离。类似于 Jan Philip Matuschek 在本文中完成的方法

不好意思把问题集中在一起。 问候克里斯

最佳答案

如果您只有点位置,MySQL 的空间扩展通常没问题,但如果您想在多边形中查找点(即按区域查询)或使用奇特的索引和搜索算法,它就会开始不知所措。有一个 really good cross comparison以帮助显示不同空间数据库之间的差异。

我发现迁移到 PostgreSQL 和 PostGIS 有更多好处。还有更多的 GIS 应用程序可以直接与 PostGIS 一起工作,例如 QGIS、Geoserver 等。最新版本的 PostGIS 有 a KNN nearest neighbor search operator例如,从数百万行中快速找到距离 map 上特定点最近的 25 个点(另请参阅 here )。

参见 the manual适用于 JDBC 和 PostGIS。至于 JPA,请参阅 PostGIS and JPA 2.0

至于距离计算,参见ST_DistanceST_Distance_Spheroid .

关于mysql - 什么数据库和 java 库用于空间分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10498863/

相关文章:

mysql - 统计在接下来 7 天内同一日期预订的所有人数

hibernate - Spring+Hibernate,Autowire sessionFactory 到 hibernate DAO

django - 同一行的插入正在发生,如果 iti 已经存在于 DB Django-rest-framework,PostgreSQL 中,如何拒绝插入

postgresql - 有什么办法可以判断行是否已经更新 postgres :golang

sql - 是否可以在每个唱片标签上使用 PG 序列?

mysql - 使用 UNION 将列值与条件相加

php - 允许apache用户通过auth套接字连接到mysql

mysql - mysql中左连接的sql查询表1和表2中的主键不相同

java - 了解 Hibernate 中的 mappedBy 注解

java - 使用 HQL(Hibernate 查询语言)转换查询 Oracle