Web GIS开发技能集


12

想要进行Web GIS开发的人应该学习/掌握哪些技术和技能?

请每个答案一种技能/技术。


4
谈论一个广泛的问题...您可以将其范围缩小到特定的软件堆栈吗?埃斯里?福斯?只是想做谷歌/点数据混搭?
Derek Swingley,2010年

我的错。ESRI或FOSS,不可能同时拥有两者吗?我希望比点混搭更复杂。足够的技能来做这样的事情。opengeohost.com/maps/stlawrence
RK

1
好问题。每个答案让我们掌握一项技能。
亚当·马坦

谢谢。好想法。我应该在问题上发帖吗?我只是意识到问题可能很广泛。作为社区Wiki会更好吗?
RK 2010年

Answers:


17

我可以向您介绍一下我的经验,该经历始于一个简单的地理学家,尝试使用GIS产品进行空间分析。

正如我所说,我是地理学家,从大学一开始,我就以用户身份开始使用GIS。之后,我开始研究如何自动化我经常要做的繁琐任务。那是充满激情的,三年三之后,我受雇于一家跨国软件公司,该公司与许多GIS系统一起工作并开发定制解决方案。

我的步骤是:

  • 很好地学习GIS。没有基本权利就不要开始学习编程。投影和转换,空间分析,栅格和矢量模型之间的差异等。

  • 了解数据库基本面:数据库系统概论数据库系统的基础。这两本书有点不同。第一个是理论上的重点,第二个是更实用的方法。

  • 学习SQL。这实际上是第一部分的第二部分。如果您开始以“ sqlish”的方式思考,它将对您有很大帮助。SQL在供应商之间变化。我可以建议您使用PostgreSQL,它是最遵循该标准的供应商。如果您需要学习特定的方言,请在实际需要时再做。

  • 面向对象编程。这似乎是一个挑战,但是一旦掌握了基础知识,这将非常容易。选择一种简单的语言即可。到目前为止,Python是最简单的一种。学习Python是一个很好的起点。有开源/免费的Python书籍,例如Dive into Python。在Python之后,有趣的选择是:.NET,Java和C / C ++。

  • 学习编程。读代码,写代码。阅读地理空间代码。编写地理空间代码。研究经典的API:GEOS,JTS,GDAL,ArcObjects(如果您是ESRI迷,这在市场上是一个很大的优势)等等。

    -处理地理空间问题并编写代码来解决。我不能强调这是多么有用。这会让您发疯,但这是确认您学习编程方面并确保您的地理空间技能是最新的一种很好的方法。就我而言,我编写了一个小型PostgreSQL应用程序对交通事故进行地理编码。

  • 继续学习。OGC标准是一个不错的选择。


4

了解数据库的处理方式。任何GIS开发人员都将广泛使用它们。

最为显着地:

  • DBMS关系模型。这些主题对于理解数据存储的基础至关重要。
  • 至少一个GIS DB解决方案。我更喜欢PostGIS,但也存在其他解决方案
  • 精通SQL和GIS SQL:如何有效地提取,插入,排序和处理数据。
  • 经典的数据库折衷:不同的操作如何影响内存,磁盘空间,CPU和网络使用率。
  • 索引。对于单独的项目符号而言,这足够重要,因为它是初学者中最常见的DB Lacuna。
  • 关于集群和可扩展性的一些知识。
  • NOSQL的基础知识。

即使您没有使用数据库,您仍在使用数据-通常可以肯定地说,将使用SQL(或其表亲之一)来查询数据。
mwalker

我同意以上所有内容都是需要了解的好东西,但是它们是否在WEB开发方面名列前茅?
西蒙2010年

CQL呢?也有必要吗?
RK 2010年

1
@simon-数据库功能不足是GIS开发人员中最常见的问题之一。恕我直言,这是最重要的技能之一(以及HTML / CSS,JavaScript和地图渲染)。@rk-CQL?
亚当·马坦

通用查询语言?我在使用GeoServer时遇到过一次。
RK 2010年

3

假设您已经了解了GIS方面的内容(制图原理等),那么我将首先浏览一下http://www.w3schools.com/- 通过HTML,Javascript,XML等教程学习

然后,您有许多不同的平台可供选择。我对ESRI有点偏见,因此我建议从开始学习API入手 http://resources.arcgis.com/content/web/web-apis- 通过概念/样本运行可以使您真正了解什么你可以实现的。
我发现下载代码示例并对它们进行反向工程以与您自己的服务一起工作(假设您有一个ArcGIS Server实例,否则可以使用ESRI示例服务器)是学习的好方法。

也有很多视频,请观看这​​些年的开发会议视频 。Id推荐:JavaScript的ArcGIS API概述,设计有效的地图服务的最佳实践,为Web重新设计桌面应用程序以及使用ArcGIS Server REST API。

您会选择哪个网络平台? 我将忽略WebADF(Java / NET),因为这将逐步淘汰。

你的客户是谁?他们将使用哪些浏览器?他们可以安装Silverlight或Flash插件吗?您要开发任何IDE吗?例如,Flex在FlashBuilder($$)中是最好的,但是您也可以使用FlashDevelop,它是一种开源替代方案。

您对既有技术还是新兴技术更满意?权衡风险。
-.NET / Java已经存在了很长时间-Silverlight和Flex相当新,关于HTML 5是否会淘汰这些平台尚有争议

Silverlight和Flex都具有更多的开箱即用的交互性,因为Java依赖于Dojo.Framework来弥补这一差距。

Web ADF和Web API在功能上的最大区别在于,ArcGIS Web API完全是客户端。

我将让其他人给出一个不太ESRI的具体答案,但显而易见的选择是开始使用Google Maps API- 有很多资源/教程可用于学习。


哇。感谢您的概述:尽管我在第三世界国家/地区,并且这里的大多数人都无法使用ESRI产品,所以DI更倾向于FOSS。
RK 2010年

请注意,ArcGIS(和许多其他)Web API的大部分处理都是在客户端进行的,但是它们都严重依赖于已发布的服务和/或服务器端的处理。因此,如果您想完成的工作不只是整合现有资源(例如地理处理),您可能必须研究服务器端技术,或者进行大量研究以找出如何在客户端上做到这一点。
mwalker

注意。立即调查开放的地理位置堆栈。
RK

3

Javascript,HTML DOM,CSS,HTTP

如果您掌握了这些内容,则可以在网络上进行任何操作。添加诸如SVG之类的精美API可能会使其变得更容易,并使您的Web应用程序更加美观,但是IMO您将永远无法完全克服以上所列的四个。


Javascript,HTML DOM,CSS,HTTP我应该学习它们的特定顺序吗?:)
RK 2010年

2
我建议以下顺序:HTML,CSS,HTTP,DOM,JavaScript,另外还有用于服务器端脚本的PHP和/或Python / Ruby。
黑暗

3

假设您设法整理了空间数据库和地图服务器(在此处的其他答案中进行了描述),并且掌握了HTML,CSS和JavaScript的知识,那么您可能会开始修改客户端库,这些客户端库将在用户的Web浏览器中使用和显示地图组件。

OpenLayers似乎是迄今为止引用和使用最多的库。它具有很好的文档和示例,您可以在此处找到一些教程。在这里, BostonGIS页面不仅对OpenLayers有用,对您也将很有用。

取决于您的知识/学习Python MapFish的意愿也是非常合适的解决方案。或者,您可以深入了解GeoDjango,但是我自己对此解决方案无法发表过多评论。

或者,您可以查看其他OSGeo Web映射解决方案,使用Flash或使用ESRI Web API之类的商业产品。


3

我同意亚当的观点,即空间数据库和SQL应该是一个起点。

之后,可能值得研究您将来的Web 地理堆栈的第二层。您将需要一些东西来充当在用户浏览器中将数据从空间数据库“服务”到客户端的桥梁。

确保您了解WFSWMS概念。

在您自己的服务器上安装并开始本地播放。开源地理空间基金会包含的两个知名项目是GeoServerMapServerQGIS mapserver也可能值得一看。在这里,ArcGIS Server相当于[昂贵!]商业。

整理完此部分后,您可能会开始使用客户端库。


2

Mapnik或用于创建地图图块的任何其他地图渲染工具。

几乎所有GIS Web开发人员都需要使用地图渲染工具,或者至少了解图层和图块的基本概念。


谢谢。我想我很好地理解了图层和图块。这是我遇到麻烦的渲染部分。
RK

2

了解您的服务器操作系统,Web服务器(IIS,Apache等)以及如何保护您的东西-即使有人为您做这一切。


2

您可以完成我的课程(https://www.e-education.psu.edu/geog585/),该课程(很好)为您提供了很好的介绍,应该可以使您入门并开始工作。


1

我不能强调乔治的第二个评论。选择您感兴趣的地理空间和/或Web问题,并在解决问题时了解所需的技术。

如果您花时间精通上述所有领域,那么在您真正开始构建挠痒痒的项目之前,这将是永远的。

我建议从使用OpenLayers构建应用程序开始,以构建来自某些现有数据服务的数据地图应用程序。然后,您可以继续创建自己的数据源或服务。如果您坚持使用FLOSS技术,则可以在任何地方构建和使用您的应用,而不会产生许可证费用的问题。

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.