《Python地理数据处理》——第1章 引言1.1 为什么使用Python和开源工具

简介:

本节书摘来自异步社区《Python地理数据处理》一书中的第1章,第1.1节,作者: 【美】Chris Garrard(加勒德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 引言

本章内容

介绍空间数据的基本类型
什么是地理处理
QGIS软件的使用
人类制作地图的历史远比我们开始写作的时间久远,法国著名的拉斯科岩洞壁画上就有一幅星空图。古时候,世界各地的人们都曾使用过地图,如巴比伦人、希腊人和中国人。制图的艺术在这数千年中也在不断发展演化,从最初将洞壁岩穴作为介质,到后来将泥土沙盘、羊皮纸、纸作为介质,再到现在的电子地图。随着技术的发展和进步,地图上所包含的细节越来越多,每个要素也越来越精确。事实上,因为最早期的地图结构简单,大多数人可能很难将其作为真正意义上的地图。

从洞穴墙壁上的刻画到大规模量产道路线图的转变,经历了很长时间,但是过去几十年的巨大变化的确令人惊叹。随着地理信息系统的普及以及更易使用,越来越多的人能够分析其空间数据,并制作出自己的高品质地图。随着网络地图以及网络地图服务的出现,用户可以在线制作自定义地图,并与世界各地的用户进行分享。我们中的大多数随身都带着移动设备,这些移动设备里安装的地图软件可以显示当前位置,并引导我们如何到达一家准备体验的新饭店。不仅如此,数据的可获得性也发生了巨大转变。早期的地图制作者如果了解到我们要把道路数据叠置在航空影像以及可通话GPS设备上时,将会十分震撼。

基于这些技术的进步,以及众多免费和开源的工具产品,你可以使用功能强大的软件来处理自己的数据。本书的目的主要是教你有关处理空间数据的基本概念以及如何通过Python编程语言和其他开源工具进行具体的操作。读完这本书,你将学会编写Python脚本来解决基本的数据分析问题,并获得解决更复杂问题的背景知识。

1.1 为什么使用Python和开源工具

使用Python和开源工具处理空间数据有以下几个令人信服的原因。首先,Python是一门功能强大的编程语言,与其他语言相比,它的优势是更容易学习,而且使用Python编写的代码也很容易阅读。如果你之前从未编过程序,这是一门很好的入门语言;如果你是从其他开发语言转变而来,你将会发现Python很容易上手。

学习Python是一个不错的选择,即使你读完这本书后不再用它进行空间分析,它依然是你编程时的绝佳之选。许多不同的Python模块可广泛地应用于众多的应用程序中,包括网络开发、科学数据分析和三维动画。事实上,地理空间应用程序只是Python众多应用中的一个很小的子集。

此外,Python是一门多平台语言,除非你使用的是限定于某个操作系统的特殊模块。你在一台机器上写的Python脚本可以在任何其他机器上运行,前提是脚本运行所需的模块已被安装。你可以在自己的Linux机器上开发一套脚本,然后将它们提供给使用Windows系统的同事,所有的脚本都应该可以正常运行。你只需要安装Python解译器运行代码,因为,这些主流的桌面操作系统都可以免费获得。

Python附带的核心语言包及众多的模块代码,都可以在自己的代码中使用。此外,还可以通过其他来源获得更多的模块代码。例如,Python包指数(PyPI),此网站上罗列了60000多种不同应用目的的扩展模块,而且全部免费。然而,这并不是说所有的Python模块都是免费的。有GIS背景的人肯定对ArcPy很熟悉,这是一个ArcGIS附带的Python模块,但如果没有ArcGIS许可授权,此模块是无法使用的。

Python不仅有大量免费的Python包,而且其中许多还是开源的。尽管一提到开源软件,大多数人就想到它们是不用花钱的,但这仅仅是开源的一部分含义。开源的真正意义是,如果你愿意,就可以获得源代码。你能访问源代码意味着没有任何东西是“黑盒子”(如果你想花时间一探盒子内部的究竟),你可以根据自己的需要修改这些代码,这才是极度的自由。我曾经使用过一个开源工具但它不能很好地满足我的需求,所以我就稍稍改进了源代码,经过重新编译,然后就有了一个能完全满足我需要的实用程序。而这对于专有软件是完全不可能的。开源软件自身具有的这两类自由特性,使其成为一种有吸引力的模式。

目前存在几种不同的开放源码许可类型,其中一些不仅允许你根据需要修改代码,还允许你售卖开发的衍生作品,而且不需要提供源代码和你所做的修改。其他许可要求如果你使用此开源软件,那么基于此开发的软件也必须开源。

在本书中,我们将介绍一些用于地理空间数据的、比较流行的开源Python模块。一些模块最初是使用其他语言进行开发的,但随着这些模块变得如此通用并为大家所重视,它们要么被移植到其他语言,要么用于研发相应的绑定模块,以便能够应用于其他语言。例如,地理空间数据抽象库(Geospatial Data Abstraction Library,GDAL)是一个用于空间数据读写的非常流行的C/C++库,针对Python、.NET、Ruby和其他语言进行了相应的绑定开发。GDAL库甚至还被一些专有软件包所使用。因为此模块库的广泛使用,所以这本书主要介绍GDAL/OGR。如果你能学会使用这个,那么再学习其他库也将不再困难。有几个基于GDAL/OGR开发的库很不错,而且使用简单,但是我们并不需要将GDAL中所有的功能都提供出来。查看附录A,可以了解本书中用到的模块安装说明。

使用开源工具的另一个优势是有一些模块包的活跃用户社区,你会发现社区里对bug和其他相关问题的解决速度要比许多专有软件包更快,你甚至可以通过电子邮件列表与这些库的实际开发人员讨论其中一些细节。

相关文章
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
67 0
|
1月前
|
数据可视化 数据挖掘 定位技术
Python和Geopandas进行地理数据可视化
【10月更文挑战第22天】本文介绍了如何使用Python和Geopandas进行地理数据可视化和分析,涵盖从准备工作、加载数据、数据探索与处理、地理数据可视化、空间分析与查询到交互式地理数据可视化等内容。通过丰富的代码示例和案例演示,帮助读者掌握地理数据分析的基本方法,为实际应用提供支持。
75 19
|
20天前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
89 4
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
29天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
27 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
36 3
|
1月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
68 3
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
40 2