国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Python做地圖投影 - 多面孔的世界

widuu / 3381人閱讀

摘要:如需轉載,請在顯著位置注明個人微信公眾號為什么要做地圖投影簡而言之,地球表面是一個三維的曲面,在曲面上進行測量是非常困難的。拓展同一個世界,不同的面孔鏈接在不同投影下的這個世界。。。

(如需轉載,請在顯著位置注明個人微信公眾號stdrei)

為什么要做地圖投影

簡而言之,地球表面是一個三維的曲面,在曲面上進行測量是非常困難的。不信你拿個地球儀量一下兩點的距離或者計算個夾角試試。將三維的曲面投影到二維平面,這樣我們學的平面幾何才有用武之地。

什么是投影

如果要了解地圖投影,首先需要知道地理坐標系投影坐標系。簡單的說,地理坐標系是參考平面為橢球面的球面坐標,最常見的是以經緯度來量算的球面坐標系統。投影坐標系是定義在一個二維平面的坐標系統,其地圖單位通常為米。將球面坐標轉化為平面坐標的過程便稱為投影。?因此,投影坐標系總是基于地理坐標系的(連坐標系都要講出身的)。

因為地球是一個赤道略寬兩極略扁的不規則的梨形球體,其表面是一個不可展平的曲面,所以運用任何數學方法進行這種投影轉換都會產生誤差和變形,為按照不同的需求縮小誤差,就產生了各種投影方法。比如這篇很有意思的文章你所不知的有趣投影方法。也可以看文末的幾幅地球不同投影的圖。

EPSG Code

如果經常跟地圖打交道,你一定會被各種花式投影變換弄的眼花繚亂。EPSG:European Petroleum Survey Group (EPSG)成立于1986年,并在2005年重組為OGP(Internation Association of Oil & Gas Producers),它負責維護并發布坐標參照系統的數據集參數,以及坐標轉換描述,該數據集被廣泛接受并使用,通過一個Web發布平臺進行分發,同時提供了微軟Acess數據庫的存儲文件,通過SQL 腳本文件,MySQL, Oracle 和PostgreSQL等數據庫也可使用。目前已有的橢球體,投影坐標系等不同組合都對應著不同的ID號,這個號在EPSG中被稱為EPSG code,它代表特定的橢球體、單位、地理坐標系或投影坐標系等信息。

開源的QGIS軟件中就直接采用了EPSG。

The CRSs available in QGIS are based on those defined by the European Petroleum Search Group (EPSG) and the Institut Geographique National de France (IGNF) and are largely abstracted from the spatial reference tables used in GDAL. EPSG identifiers are present in the database and can be used to specify a CRS in QGIS.

一個查詢EPSG code的網站 epsg.io

pyproj小試牛刀

pyproj是PROJ4的python接口封裝,直接看一個官網的例子吧。直接利用epsg code來定義投影參數。

from pyproj import Proj,transform

# The Proj class can convert from geographic (longitude,latitude)
# to native map projection (x,y) coordinates and vice versa, 
# or from one map projection coordinate system directly to another.

p1 = Proj(init="epsg:26915")
p2 = Proj(init="epsg:26715")
x1, y1 = p1(-92.199881,38.56694)
x2, y2 = transform(p1,p2,x1,y1)
print "%9.3f %11.3f" % (x1,y1)
print "%9.3f %11.3f" % (x2,y2)

輸出為

569704.566 4269024.671
569722.342 4268814.027
基于geopandas的矢量地圖投影
import shapely, geopandas, fiona
import seaborn as sns
from fiona.crs import from_epsg,from_string

# Data
shp = "E:NationalGISdataProvince.shp"

shp_df = geopandas.GeoDataFrame.from_file(shp)
# #IndexError報錯的話,用arcgis將shapefile文件重新導出一遍試試
shp_df.head()

# 根據當前的蘭伯特投影繪制
shp_df.plot(column="GDP_1994",colormap="Set1")

# 轉換到經緯度坐標
shp_df_wgs84 = shp_df.to_crs(from_epsg(4326))
shp_df_wgs84.plot(column="GDP_1994",colormap="Set1")

# 國家2000坐標系
# EPSG:4508  CGCS2000 / Gauss-Kruger CM 111E
shp_df_4508 = shp_df.to_crs(from_epsg(4508))
shp_df_4508.plot(column="GDP_1994",colormap="Set1")

# 除了直接用ESPG code,也可以自己定義投影參數

ESRI_54024 = """
+proj=bonne +lon_0=0 +lat_1=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs 

shp_df_3408 = shp_df.to_crs(from_string(ESRI_54024))
shp_df_3408.plot(column="GDP_1994",colormap="Set1")

代碼和矢量地圖數據下載

百度網盤下載地址: http://pan.baidu.com/s/1c1BExH2
密碼請在關注微信公眾號stdrei后,輸入projection直接獲取。

拓展:同一個世界,不同的面孔

鏈接 http://www.viewsoftheworld.ne...

在不同投影下的這個世界。。。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38272.html

相關文章

  • 高仿 ios 相冊地圖功能

    摘要:本篇文章已授權微信公眾號郭霖獨家發布老規矩先上圖最近沒有什么時間,后面項目再補上詳細說明百度地圖新增點聚合功能。百度地圖是把整個地球是按照一個平面來展開,并且通過墨卡托投影投射到坐標軸上面。上圖很明顯墨卡托投影把整張世界地圖投影成。 本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家發布 老規矩先上圖最近 沒有什么時間,后面項目再補上詳細說明 showImg(https:/...

    pakolagij 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<