今天要用到basemap读取shp文件报错,查了很多资料,都没有解决。

先是:

fig,ax = plt.subplots(figsize=(15,10))
from mpl_toolkits.basemap import Basemap
m = Basemap(llcrnrlon=-128.,llcrnrlat=30.,urcrnrlon=-110.,urcrnrlat=43.,
projection='merc',lat_1=20.,lat_2=40.,lon_0=-60.,
resolution ='l',area_thresh=1000.,ax = ax)
fm = np.vectorize(m,otypes=[np.int32,np.int32])
x,y = fm(housing.longitude,housing.latitude)
m.scatter(x,y,s=housing['population']/50,alpha=0.4,
label='population',c=housing['median_house_value'],
cmap=plt.get_cmap('jet'))
m.readshapefile('World_GIS_data/country','country')

  

成功了。

可再用另一中国地图来加载时就出错了:

报错:

ValueError: shapefile must have lat/lon vertices  - it looks like this one has vertices
in map projection coordinates. You can convert the shapefile to geographic
coordinates using the shpproj utility from the shapelib tools
(http://shapelib.maptools.org/shapelib-tools.html)我

我按着提示去找了shapelib,源码下载到了,需要编译。

我也没有vc++环境,太麻烦了,也不知道能成不。

想了好多办法都没成功,包括用pyshpelib,这个也还是要用到上面的shapelib。

然后找到了:

https://github.com/matplotlib/basemap/issues/285

说可以用geopandas来处理。

然后就是安装,这又是一个坑。

安装数次报错,找不着门道。

最后看到一篇文章。该作者可能也被坑惨了,总结写的很好(墙裂推荐):

https://geoffboeing.com/2014/09/using-geopandas-windows/

跟着上面这篇文章的终于将geopandas安装好了

然后改shapefile的crs为空字典。本来以为就好了,结果还是不行!!!

还是不行!

然后又看到这篇下面的解答,提到了ogr2ogr

https://stackoverflow.com/questions/54508676/convert-a-shapefile-to-geographic-coordinates

弄半天才明白的是安装的GDAL中的可执行文件。

后面又找到一个库,调用的ogr2ogr:

地址:

https://github.com/charlie1347/basemaps

最后:

大功告成!!!

最后在解决这个问题过程中发现一个资源:

http://geoportal.statistics.gov.uk/datasets/nuts-level-1-january-2018-full-extent-boundaries-in-the-united-kingdom/data

python basemap readshapefile二三事的更多相关文章

  1. Python中字符串二三事

    首先说两个运算符: " == " 运算符测试值的等价性,递归地比较所有内嵌对象 " is " 表达式测试对象的同一性,测试两者是否为同一对象(是否为同一地址) ...

  2. Python的__getattribute__二三事

    本来以为自己对__getattribute__已经比较了解了,结果用到的时候,才发现有一些知识点之前一直没有真正弄明白,记录如下(针对python3,python2差异较大): object类有__g ...

  3. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  4. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  5. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  6. linux杂记(十二?) 关于账号和密码的二三事

    关于密码的二三事 关于账号和密码的二三事 久了不更linux的相关知识,实在是懒得想内容点(纯粹是懒).那么今天就来谈谈关于linux密码和账号的重要概念. 假如你的主机遭到入侵,那么对方的第一个侵入 ...

  7. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  8. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  9. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

随机推荐

  1. 获取当前时间的MySql时间函数

    mysql> select current_timestamp(); +---------------------+ | current_timestamp() | +------------- ...

  2. C# 反射的详细理解

    网友A的解释: C# 反射机制的学习心得   首先说说,为什么要学习 反射 呢?有什么用啊. 在我们写程序的时候,经常会用到一些类中的方法,那么就要调用这些个类.如果不是在一个命名空间里时,就要引用相 ...

  3. 爬虫之抓js教程

    在初学的爬虫过程中,很多人还不知道有些字段是如何生成的,怎样模拟生成这些字段来拼接头部.为了再次纪念[宏彦获水]成语初次面世,特地用[百度登陆]写下一篇登陆百度的教程,以供大家参考. 前面学习了如何在 ...

  4. 使用cmd打开磁盘目录和文件

    例如: 1.进入e盘 2.查看E盘下所有文件 3.进入指定文件夹

  5. Hash的应用2

    代码: #include <stdio.h> #define OFFSET 500000//偏移量 ];//记录每个数是否出现,出现为1,不出现为0 int main(){ int n,m ...

  6. 详细记录登录过程的用户、IP地址、shell命令以及详细操作时间

    将下面的代码添加到/etc/profile #history USER_IP=`>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'` HISTDIR= ...

  7. linux_硬链接和软链接区别

    硬链接有点类似于复制的概念.    ln 源文件 目的文件    ln不加-s,则默认是硬链接.例如,ln script script-hard,ls命令显示,script*显示硬链接有两个.我任意删 ...

  8. Python 3.5学习笔记(第二章)

    本章内容 1.模块 2.数据类型与数据运算 3.进制 4.byte 与 string 的互相转换 5.列表 6.元组 7.字符串操作 8.字典 一.模块 Python 把某些常用的定义存放在文件中,为 ...

  9. NFS存储服务及部署

    1 NFS简介 1.1 什么是NFS NFS=Network File System=网络文件系统.主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用服 ...

  10. Git设置忽略文件

    在向代码仓库提交的时候,一般需要忽略掉一些文件或目录,比如Eclipse工程的配置文件,Maven工程的target目录,以及.log日志文件等等. 这个问题在Git中解决起来也很简单:在Git工作区 ...