(什么时候)我应该使用支持GIS的数据库?


22

我是GIS的新手,是一位长期程序员。我试图了解GIS的数据库方面,并且我了解到有一些专门用于GIS的数据库。基本上,我试图了解是使用这样的数据库,还是坚持使用非常流行,建立良好,得到广泛支持(和免费)的MySql。

我可能要编写的那种应用程序可能是这样的:

  • 车队管理(陆上或海上车辆)
  • 员工追踪
  • 库存控制(实际位置的粒度精确到米左右)
  • 嗯,就是这样,真的

我通常希望跟踪的项目不超过几百(最多,可能几千)。有时,取决于应用程序,这些项目将位于同一(大型)建筑物,一系列建筑物,城市,国家或世界范围内。

我偶尔会在建筑物的自定义平面图上,或者更可能在Google Earth或类似物中(在更多其他问题中)以视觉方式代表它们。

在我看来,我对MySql并不满意,并为纬度/经度或其他位置数据添加了列,但这可能只是因为我知道MySql。

有什么理由让我看一个更专业的数据库?

Answers:


13

空间数据库(PostGIS,MySQL的空间扩展或其他任何东西)的真正优势在于您可以对空间数据进行空间操作。如果仅存储点坐标,那么从空间中获取的收益并不多(仅使用两个数字列)。如果您存储点坐标(客户在哪里),线坐标(送货卡车到哪里)和多边形(销售区域)的组合,然后进行查询以关联这些各种信息(一次销售中有多少个客户)区域,今天有多少辆卡车从客户所在地出发,行驶距离不足2公里,但没有交付或提货),您可以获得很多收益。

正如iant所指出的,PostGIS对于服务器应用程序当然值得一看。SpatiaLite是SQLite的空间扩展,它可能更适合台式机/嵌入式/脱机移动应用程序,同时提供了相当相似的SQL功能[ 披露:我在SpatiaLite上工作 ],并指出没有什么可以阻止您在桌面应用程序。


+1,谢谢。关于它为什么基于Sqlite而不是基于MySql的只是古玩……
Mawg 2012年

1
我认为它只是不同的设计目标(嵌入式,无配置等)。
BradHards 2012年

+1是我的想法(我也来自嵌入式背景)。谢谢(你的)信息。我希望我最终会使用基于浏览器的应用程序(即使我们更愿意这样做,我们大多数人也会这样做),因此“精简版”不是必需的。只是出于好奇,现在哪种类型的应用程序的d / b位于嵌入式系统/设备中?(抱歉,仍在学习中)
Mawg 2012年

1
嵌入式是一个很大的领域,但离线移动似乎是一个新兴领域。
BradHards 2012年

2
@Mawg大多数现代电话和浏览器都使用sqlite作为数据存储。它确实是一个单独的c文件,并且该API非常简单,并且可以在进程内运行。与之相反,MySQL需要运行多个进程以及一个客户端/服务器体系结构。两个非常不同的用例
Ragi Yaser Burhum 2012年

8

您当然应该考虑非常流行,建立良好,得到广泛支持(和免费)的PostGIS。它会做MySQL能够做的所有事情,并将空间位置作为头等对象处理。因此,您可以基于边界框(或其他多边形)中的点进行选择,而不必写出所有比较等。

一旦您开始问一些问题,例如哪个对象在哪个国家(或建筑物)中,则PostGIS真正变成了现实,如果您决定需要映射对象,那么所有流行的开源工具都将与PostGIS对话。盒子。


+1,非常感谢。我现在去研究它。从编码器的角度来看,如果我基于Web,并且希望使用Widnwos桌面应用程序,那么我希望与PHP进行交流,然后我将使用Delphi的AnyDac数据库访问组件,因此,我将通过电子邮件发送AnyDac支持。再次感谢!
Mawg 2012年

1
致Mawg:我仍然必须看到任何第3方的delphi数据库库,以支持postgis,db2,spatiallite,sql server等中的任何GIS功能。看来这是您必须自己做的事情。
Uffe Kousgaard,2012年

+1 @UffeKousgaard我在最便宜的cartovcl.com上仅以
Mawg

1
Cartovcl(我已经使用了近10年)是一个平面文件GIS SDK,它内置了GIS功能。它不是在启用空间的远程数据库之上的瘦API。
乌菲·库斯加德

1
历史文档:-)但是TatukGIS可能是目前最全面的GIS SDK之一(但也有点贵)。但是它与cartovcl在同一个联盟中,即gis功能是内置的,它不是远程数据库之上的API。
Uffe Kousgaard,2012年

2

为了增加答案并重申一些要点,如果您有与数据的空间关系有关的查询,请使用一个启用空间的数据库,以下为其中一些:

  1. 哪些点在我的兴趣点x公里内
  2. 哪些点更近
  3. 一个点到另一个点有多远
  4. 通路内的x公里

如果与WHERE有关的此类查询对于应用程序而言是重要功能,则通常强烈建议使用空间数据库。

当然,对于某些此类查询,可以求助于编码/应用程序逻辑,例如将距离公式用于1,但是不需要重新发明轮子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.