如何构建一个县的shp图?R语言和Global mapper

经常遇到这样一个问题,想要一个县市地图的时候,找不到也买不到shp底图。曾经是淘宝上30元买一个底图,还经常没有最新的shp文件。因此,一直在找一个省钱省力的方法,那么本文告诉你如何自己构建一个shp,并且能够在页面上展示,结果不可思议哦~

本文分成两个部分:

(1)运用Global mapper实现shp或者kmz文件转换

(2)运用R语言的leaflet和leafletCN进行在线地图可视化展示

1. 构建底图数据

参考了这个回答:怎么利用百度地图API获取某个地区区域轮廓矢量图(链接:

https://zhidao.baidu.com/question/489614574694756692.html)

第一步:新建记事本:把上边链接页面的代码粘贴进去

第二步:把txt文件转为HTML文件(改后缀)

第三步:打开链接,输入一个地方,比如:我喜欢的桐乡市

640?wx_fmt=jpeg

百度地图API获取一个地方边界经纬度

第四步:复制下边的经纬度,然后粘贴到csv文件中,进行分列,整理后如图所示,经度(lon)一列,纬度(lat)一列(经验告诉,先分列分号,然后转置,再分列逗号和空格)。

此时边界的经纬度数据已经准备好了,在csv文件两列中。

640?wx_fmt=jpeg

整理经纬度为两列

2.运用Global Mapper转化为矢量图(shp、kmz等)

个人觉得Global Mappe比arcgis读取数据快对了,所以习惯用Global Mappe来进行,当然可以用arcgis实现,这个方法网页搜索一下就能实现。

第一步:Global Mappe导入csv:

640?wx_fmt=jpeg

在此,有一个问题需要指出来,我的边界是用百度地图的经纬度,所以,如果是用wgs84坐标系的话,那么经纬度是需要进行转化的,关于坐标转化(百度转为WGS84),可以查看我的文章R语言:如何实现百度、高德、谷歌地球坐标系互相转换?

(链接:https://zhuanlan.zhihu.com/p/40355546)

第二步:转为矢量图

选择:File-Export Vector Format

导出,保存,就变成线图了!转换速度非常快,很便捷。

640?wx_fmt=jpeg 导出shp界面

此时,你已经获得了一个桐乡市的矢量图了~相当于自己制作的哦^_^

3. R语言:在线地图可视化

第一步:加载需要的包:

library(leaflet)
library(leafletCN)
library(geoChina)
library(maptools)

第二步:导入上边准备的csv数据,转换坐标系

##原始数据为百度地图数据,需要转为高德地图经纬度
map = read.csv("tongxiangbaidumap.csv", header = TRUE,encoding='UTF-8')
mapgcj=bd2gcj(map$lat,map$lon)

第三步:在线地图可视化

leaflet() %>% 
  amap() %>%
  addPolylines(data=mapgcj,~lng,~lat,color="blue")
640?wx_fmt=jpeg

总结:leaflet包功能强大,这只用到了它的addPolylines函数,其他多种方法可以拓展学习。现在能够自己制作一个地方的shp了,也终于不再烦恼到处找人要底图,所以分享给大家,感觉这个方法非常非常棒~希望能够帮到大家。跟大家一起学习~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值