打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何构建一个县的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文件(改后缀)

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

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

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

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

整理经纬度为两列

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

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

第一步:Global Mappe导入csv:

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

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

第二步:转为矢量图

选择:File-Export Vector Format

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

导出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')

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
把成都市所有图书馆标记在地图上需要几步?超简单
户外爱好者-OZI等高线地图的DIY
等高线数据获得以及地图制作方法
等高线地图的制作
随心所欲做地形图
Global Mapper 14.1(b120512)破解汉化版读取shapefile格式文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服