經(jīng)常遇到這樣一個問題,想要一個縣市地圖的時候,,找不到也買不到shp底圖,。曾經(jīng)是淘寶上30元買一個底圖,還經(jīng)常沒有最新的shp文件,。因此,,一直在找一個省錢省力的方法,那么本文告訴你如何自己構建一個shp,,并且能夠在頁面上展示,,結果不可思議哦~ 本文分成兩個部分: (1)運用Global mapper實現(xiàn)shp或者kmz文件轉換 (2)運用R語言的leaflet和leafletCN進行在線地圖可視化展示 1. 構建底圖數(shù)據(jù)參考了這個回答:怎么利用百度地圖API獲取某個地區(qū)區(qū)域輪廓矢量圖(鏈接: https://zhidao.baidu.com/question/489614574694756692.html) 第一步:新建記事本:把上邊鏈接頁面的代碼粘貼進去 第二步:把txt文件轉為HTML文件(改后綴) 第三步:打開鏈接,輸入一個地方,,比如:我喜歡的桐鄉(xiāng)市 百度地圖API獲取一個地方邊界經(jīng)緯度 第四步:復制下邊的經(jīng)緯度,,然后粘貼到csv文件中,進行分列,,整理后如圖所示,,經(jīng)度(lon)一列,緯度(lat)一列(經(jīng)驗告訴,,先分列分號,,然后轉置,再分列逗號和空格),。 此時邊界的經(jīng)緯度數(shù)據(jù)已經(jīng)準備好了,,在csv文件兩列中。 整理經(jīng)緯度為兩列 2.運用Global Mapper轉化為矢量圖(shp、kmz等) 個人覺得Global Mappe比arcgis讀取數(shù)據(jù)快對了,所以習慣用Global Mappe來進行,,當然可以用arcgis實現(xiàn),這個方法網(wǎng)頁搜索一下就能實現(xiàn),。 第一步:Global Mappe導入csv: 在此,有一個問題需要指出來,,我的邊界是用百度地圖的經(jīng)緯度,,所以,如果是用wgs84坐標系的話,,那么經(jīng)緯度是需要進行轉化的,,關于坐標轉化(百度轉為WGS84),可以查看我的文章:R語言:如何實現(xiàn)百度、高德,、谷歌地球坐標系互相轉換,? (鏈接:https://zhuanlan.zhihu.com/p/40355546) 第二步:轉為矢量圖 選擇:File-Export Vector Format 導出,保存,,就變成線圖了,!轉換速度非常快,,很便捷,。 此時,你已經(jīng)獲得了一個桐鄉(xiāng)市的矢量圖了~相當于自己制作的哦^_^ 3. R語言:在線地圖可視化第一步:加載需要的包: library(leaflet)
library(leafletCN)
library(geoChina)
library(maptools) 第二步:導入上邊準備的csv數(shù)據(jù),,轉換坐標系
第三步:在線地圖可視化 leaflet() %>%
amap() %>%
addPolylines(data=mapgcj,~lng,~lat,color='blue') 總結:leaflet包功能強大,這只用到了它的addPolylines函數(shù),,其他多種方法可以拓展學習。現(xiàn)在能夠自己制作一個地方的shp了,,也終于不再煩惱到處找人要底圖,,所以分享給大家,感覺這個方法非常非常棒~希望能夠幫到大家,。跟大家一起學習~ |
|