访问量: 441 次浏览

设计许多地理空间系统的一个基本要素是选择要使用的编程语言(或多种语言)。 我们可以设想大多数激动人心的项目都将至少涉及一些编程来定制现有工具或开发全新的工具。 当今,对地理空间专业人士有用的编程语言种类繁多, 维基百科就列出百余种语言。
表征编程语言的一种重要方法是根据它们的类型系统, 即可以为变量或对象赋予意义的规则。 一个基本的区别是静态类型和动态类型之间的区别。 C、C++、C# 和 Java 等静态类型语言在编译时评估类型信息, 并拒绝格式不正确的代码。 这样做的好处是可以在编译时而不是运行时捕获许多错误, 并且可以在过程的早期捕获、修复错误。 静态类型的缺点是它使代码更加冗长, 有时可能会花很多时间“让编译器开心”。 Python、JavaScript、PHP 和 Ruby 等动态类型语言将类型检查延迟到运行时。 因此,经常不在使用变量之前不必指定变量的类型。 动态类型的优点在于易于编程; 缺点是有些错误会在运行程序之前漏掉, 并且这些错误可能很难在代码中确定下来。
如今有大量的编程语言在使用, 真的没有最佳的选择。 我们在此重点关注与当代地理空间系统最相关的那些编程语言。
地理空间行业中的通用编程语言

下面,我们简要描述出现在两个或多个列表中的编程语言。 第一组(按字母顺序排列)是出现在 5 个或更多列表中的那些, 因此通常在开发人员范围内最受欢迎,然后(也是按字母顺序)我们概述那些出现在较少(但至少 2 个)列表中的关键特征。 这些描述之后是关于针对特定应用程序选择非常适合特定 GIS(和其他地理空间)开发任务的语言观点。

1.Python:Python 如今非常流行, 并且是 ArcGIS 和 QGIS 中使用的主要脚本语言。 Python 通常被认为是一种很好的“胶水”语言, 并且通常很容易使用。 它有很多扩展,例如 SciPython 和 Numerical Python。
2.JavaScript:JavaScript 是当前 Web 应用程序用户界面的领导者。 Google Maps 是 JavaScript 的重度用户, Esri 的 ArcGIS API for JavaScript 支持网络地图开发, 领先的开源网络地图客户端(OpenLayers、Mapbox GL JS)也是基于 JavaScript。 D3 是一个非常流行的网络可视化库, 支持今天看到的许多交互式网络地图。
3.C#:C# 是 Microsoft 对 Java 的回应(见下文), 并且是 .NET 的旗舰编程语言。 因此,如果开始使用 .NET SDK 编写新的 ArcGIS 附加组件(链接是外部的), 那么将在 C# 中工作。
4.C++:C++ 是一种通用编程语言(派生自 C), 具有面向过程和面向对象的特性, 通常用于嵌入式系统。 它于 1985 年开发, 自 2004 年左右以来受欢迎程度普遍下降(可能是由于陡峭的学习曲线和普遍的复杂性), 但它仍然保持了相当大的项目份额。 通常使用的许多软件应用程序都是用 C++ 编写的, 或者至少部分实现使用 C++(ArcGIS、Windows 操作系统、Firefox、MS Office 等), 因此它不会很快消失。
5.Java:Java 仍然是一个受欢迎的选择, 尽管它的受欢迎程度在大多数方面都在逐年下降。 Java 用于 GeoServer(链接是外部的)和 Java 拓扑套件 ( JTS(链接是外部的)) 项目。


许多 GIS 项目利用不止一种上述语言。 这是因为某些语言比其他语言更好地支持 GIS 中的不同任务。 虽然不同的开发人员对语言与任务的最佳匹配有不同的看法, 但以下任务语言列表(链接是外部的)是值得一看的(特定于 GIS 相关工作)由 Florin-Daniel Cioloboc 在 2016 年制作。