
地理空间编程可能非常具有挑战性,尤其是对于 GIS 或编程领域的新手而言。然而,构建动手项目可以让它变得有趣,因为它会帮助您获得实用的开发技能、构建您的投资组合和为您的下一份工作建立简历,并且您将把您的理论知识用于开发伟大的项目。
在本文中,我们展示了六个项目,其中包含建议的工具、先决条件和学习资源,可帮助您提高地理空间编程技能。我们希望您发现它们有趣且有用。其中有六个,我们鼓励您一次学习一个,并专注于理解基本概念。有时,理解概念比你编写的代码更重要。
1.矢量/光栅文件转换器
工具:
●网页:HTML、CSS、JS、Leaflet、React、Turf JS、shapefileJs 等;
●桌面:Python、匀称、fiona、geopandas、ogr2ogr、pyGUI 等;
●API:Django/Geodjango、Node 等。
先决条件:
至少具有上面列出的一种编程语言的基础知识,可以通过开始这里提到的项目来学习你的方法。
概括:
在多种矢量和栅格 GIS 数据格式之间进行转换的平台。例如,从 Esri Shapefile到 GeoJSON、GeoJSON 到 topoJSON、KML 到 GeoJSON、GeoTiff 到 ECW、Geotiff 到 COG、PNG 到 GeoTIFF、GEOTIFFs 到 JPEG、CSV 到 Esri Shapefile 等。
这样的平台作为项目构建将极大地提高开发技能,进行大量研究,并且将结合多个工具和库以使其成形。随意用最舒服的语言来构建它,可在 Web、桌面应用程序或 API 上使用它,无论选择什么方式,事实上仍然会从这个练习中学到很多东西。
教程:
Automating GIS processes(https://automating-gis-processes.github.io/site/)
2.构建QGIS插件
工具:
Python、QGIS、QT 设计器。
先决条件:
利用 QGIS 的经验以及对 Python 中面向对象编程 (OOP) 范式的理解。
概括:
QGIS是一种流行的功能强大的开源地理空间软件。构建一个插件可以被认为是一种为开源做贡献以及提高你的Python 编程技能的方式。由于 QGIS 是一个开源工具,您可以查看任何插件的代码结构,也可以根据您的需求进行修改。
QGIS存储库中已经有很多插件,找到QGIS插件可以解决的现有问题进行编码!
教程:
●QGIS教程:
(https://www.qgistutorials.com/en/docs/3/building_a_python_plugin.html)
●pyQGIS Cook Book:
(https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/)
3.空间书签注释
工具:
●映射库:Leaflet
●后端:Django
●数据库:PostGIS
先决条件:
Django的基础知识。
概括:
该项目的主要动机是提高 web-GIS 技能。如果您曾经为初学者搜索 Web 开发项目的想法,可能会在列表中的某个地方看到“待办事项列表”。通常,待办事项列表项目包含添加、查看、编辑和删除项目列表的功能。同样,您可以尝试为空间数据创建相同的创建、读取、更新、删除 (CRUD) 功能。
示例项目之一是书签注释应用程序,用户可以在其中在地图上添加注释。添加的注释必须包含纬度和经度形式的位置信息,并应存储在空间数据库中。出于可视化目的,应从数据库中获取所需的注释。
4.构建遥感/地球观测应用程序
工具:
Python、 R、Google Earth Engine、JS、HTML & CSS、Leaflet JS、Mapbox JS
先决条件:
使用任何或大多数以下编程语言或上面列出的平台的经验。
概括:
开发一个平台,可以使用像哨兵这样的开放卫星图像生成一个区域的时间序列地图。用户应该能够绘制边界或上传边界并生成地球上位置索引的时间序列。
该项目将允许探索地球观测、时空资产目录 (STAC)规范、云优化 Geotiff (COGS)、哥白尼星座、地图平铺以及一些 Python 工具和技术的世界,放到网上会很容易与人分享或被链接。
教程:
●STAC(https://stacindex.org/)
●Sentinel Hub(https://www.sentinel-hub.com/)
5.自动化枯燥的任务
工具:
Python、PyQGIS、ArcPy、R
先决条件:
使用 QGIS 或 ArcMap/ArcGIS Pro 的经验以及对 Python 编程语言的理解。
概括:
一些重复性任务,例如坐标格式之间的转换(如,十进制度数到度分秒,将文件格式从一种格式转换为另一种格式等)和无法涵盖的那些可以自动化。
教程:
●pyQGIS Cook Book:
(https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/)
●QGIS教程:
(https://www.qgistutorials.com/en/docs/3/building_a_python_plugin.html)
6.Web-GIS 数据可视化门户
工具:
HTML、CSS、JavaScript、Leaflet、GeoServer
先决条件:
基本了解 HTML、CSS、JavaScript 和 GeoServer。
概括:
Web-GIS 成为传播地理空间数据和处理工具的一种廉价而简单的方法。许多组织对向用户分发不受时间和地点限制的地图和处理工具感兴趣。Web-GIS 允许与地理空间数据进行可视化交互。如Leafletjs、openlayers、mapbox 等映射库可更轻松地在几行代码内开发地图可视化界面。但是直接使用映射库,对于各种文件格式的海量数据进行管理是非常困难的。为了解决这个问题,可使用 GeoServer。
GeoServer是一个用于共享地理空间数据的开源服务器。它提供了开放地理空间联盟 (OGC) 标准协议,例如 Web Feature Service (WFS)、Web Map Service (WMS) 和 Web Coverage Service (WCS)。此类服务使发布和共享地理空间数据变得非常容易。
教程和参考:
●Web GIS 开发 2021 课程 GitHub 存储库:
(https://github.com/iamtekson/GIS-portal)
●系列-使用开源工具的 WebGIS:
(https://www.gislounge.com/series-webgis-using-open-source-tools/)




