天天看點

《Python地理資料處理》——第1章 引言1.1 為什麼使用Python和開源工具

本節書摘來自異步社群《python地理資料處理》一書中的第1章,第1.1節,作者: 【美】chris garrard(加勒德) 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

本章内容

介紹空間資料的基本類型

什麼是地理處理

qgis軟體的使用

人類制作地圖的曆史遠比我們開始寫作的時間久遠,法國著名的拉斯科岩洞壁畫上就有一幅星空圖。古時候,世界各地的人們都曾使用過地圖,如巴比倫人、希臘人和中國人。制圖的藝術在這數千年中也在不斷發展演化,從最初将洞壁岩穴作為媒體,到後來将泥土沙盤、羊皮紙、紙作為媒體,再到現在的電子地圖。随着技術的發展和進步,地圖上所包含的細節越來越多,每個要素也越來越精确。事實上,因為最早期的地圖結構簡單,大多數人可能很難将其作為真正意義上的地圖。

從洞穴牆壁上的刻畫到大規模量産道路線圖的轉變,經曆了很長時間,但是過去幾十年的巨大變化的确令人驚歎。随着地理資訊系統的普及以及更易使用,越來越多的人能夠分析其空間資料,并制作出自己的高品質地圖。随着網絡地圖以及網絡地圖服務的出現,使用者可以線上制作自定義地圖,并與世界各地的使用者進行分享。我們中的大多數随身都帶着移動裝置,這些移動裝置裡安裝的地圖軟體可以顯示目前位置,并引導我們如何到達一家準備體驗的新飯店。不僅如此,資料的可獲得性也發生了巨大轉變。早期的地圖制作者如果了解到我們要把道路資料疊置在航空影像以及可通話gps裝置上時,将會十分震撼。

基于這些技術的進步,以及衆多免費和開源的工具産品,你可以使用功能強大的軟體來處理自己的資料。本書的目的主要是教你有關處理空間資料的基本概念以及如何通過python程式設計語言和其他開源工具進行具體的操作。讀完這本書,你将學會編寫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和其他相關問題的解決速度要比許多專有軟體包更快,你甚至可以通過電子郵件清單與這些庫的實際開發人員讨論其中一些細節。