如何用Java开发LBS / GIS应用程序的概述

时间:2009-09-30 18:46:00

标签: java geolocation gps gis postgis

我需要为现有应用开发基于位置的扩展,以允许用户查看周围的所有其他用户(在固定的空中距离内)。现有的应用程序是使用Axis(Web服务)+ Spring + Hibernate + MySQL开发的。

要求是:

  1. Java框架(除非商业解决方案具有很大的优势,否则最好是开源的)。与Hibernate,Spring等集成首选。
  2. 用户需要使用标准API(即SOAP或REST)在设定的时间段更新他/她的位置
  3. 用户需要通过发送纬度和经度或美国地址来更新位置。
  4. 如果无法使用GPS,可能会将某些设备使用手机信号塔和/或wifi数据。
  5. 无需步行或行车路线。没有必要有驾驶或步行距离,只需要近似的空中距离。
  6. 应用程序的用户继续移动(销售人员)并在设定的时间段内更新他们的位置(每隔约15分钟)。
  7. 项目未来可能会改变以处理其他兴趣点(即仓库位置,客户位置),但这些可能会处于固定的物理位置(与继续移动的用户相比)。
  8. 在特定用户周围检索用户的性能至关重要;因此,它更喜欢内存中的映射(而不是数据库查询)。
  9. 此时无需渲染地图。这可能会改变。
  10. 我听过或看过以下条款和框架,我不确定它们的含义以及使用哪一个:

    • ESRI
    • 形状文件
    • 的GeoServer
    • GeoTools
    • PostGIS的

    我将非常感谢我对开发此类项目所需采取的步骤进行简要概述,是否以及如何使用上述工具,哪些数据(即GPS,Wifi,Cell-tower)可以免费获取,哪些可以使用我们需要付钱。

    非常感谢对某些教程或书籍的参考。

    谢谢!

2 个答案:

答案 0 :(得分:2)

我真的不喜欢你的问题。作为拥有大学学位和12年经验的地理空间专业人士,我想说:聘请能为您完成工作的人。

但我会尝试给出一些不错的答案:

  • 整个应用程序可以使用开源构建。
  • 地图需要地理数据才能提供背景信息。这可以是;真正昂贵的(teleatlas或navteq数据)或无价的(openstreetmap)
  • ESRI是一家公司
  • Shapefile是一种存储地理数据的文件格式
  • Geoserver是一种提供地图的开源解决方案
  • GeoTools是用于进行转换,创建功能和进行转换的java库,这些转换也构成了geoserver的基础
  • PostGIS是一个存储地理数据的数据库

答案 1 :(得分:2)

一般而言;

一切皆有可能。我建议首先写下你想要构建的内容,你想要它维护的是什么,你希望它使用什么样的服务器架构,然后开始消除选项。

首先,您需要选择后端来存储数据。为此,一些数据库系统具有“空间”扩展或模块,这些扩展支持投影,变换和空间查询(最近,内部,触摸......):

商业:

  1. Oracle空间
  2. MS SQLserver spatial
  3. 开源:

    1. postgis(for postgres)
    2. MySQL空间
    3. MonetDB(正在进行中)
    4. 像ESRI shapefiles这样的平面文件
    5. 然后,您需要一个服务器应用程序来将地理空间数据集托管为(矢量或栅格)地图:

      商业:

      1. ESRI arcIMS
      2. ESRI arcGIS服务器
      3. PB MapInfo MapXtreme
      4. ...
      5. 开源:

        1. UMN Mapserver
        2. 利用Geoserver
        3. Mapnik的
        4. 最后,如果您想创建一个包含交互式地图的Web应用程序,您需要一些Javascript Web地图框架:

          商业:

          1. Google地图
          2. PB MapInfo MapXtreme
          3. Map24
          4. ...
          5. 开源:

            1. 的OpenLayers
            2. 变色龙
            3. MapFish
            4. GeoExt
            5. 您还可以使用Flash网络地图框架,例如:

              1. 火烈鸟-MC
              2. 所有这些,取决于所选择的架构,至少需要一个带有cgi或servlet运行器的web服务器。

                基本上,这一切都归结于您的组织:您的组织目前正在使用的架构是什么?专业知识如何?什么架构符合您公司的专业领域?

                商业化时,许可证的价格从500美元到500,000美元不等,具体取决于供应商。使用开源时,您的许可证当然是无效的。但您还需要计算学习曲线和所需的配置时间。