分享

shp文件导入到mysql的注意事项

 LibraryPKU 2014-03-11

最近工作上要弄个开源的gis所以接触了一些这方面的知识

起初打算是用postgis来存放数据,但是因为弄的这个东西是要和我们之前的项目一起的,以前的项目用的是mysql的数据库,所以为了能整合到一起想把两个并到一个数据库里。

我们用的地图是一个北京市的shp文件,要导入到postgis的到是很简单,用shp2pgsql工具转完导入就可以了,导入mysql也有专门的工具,shp2mysql这个在网上能找到,而且还有它的使用方法这里就说下我做的步骤吧。

首先在cmd下定位到有shp2mysql文件的目录(我下载的shp2mysql文件夹下有个DOShere文件,双击这个文件就可以打开定位在当前目录的dos窗口),dos命令为:


shp2mysql c:\北京_area.shp beijing_area gis > beijing.sql

(shp2mysql shp文件名.shp 表名 数据库名 > 生成的sql文件名.sql)

注意这句话里的空格,正确的话就会在当前文件夹下生成对应的sql文件了,数据量大的话会等待几秒,这里它还告诉了一些要修改的地方:
   ALTER TABLE 表名 ADD the_geom GEOMETRY;
   add必须为:the_geom GEOMETRY
    替换所有的,-1) );为) );

刚开始的时候字段名为ogc_geom,这里要改成the_geom,可能是为了显示的问题

我按照上面改完后向数据库里导入还是有问题,后来对比着改了一些地方,下面这些是我修改的地方,我不知道是不是都会遇到。

首先要注意"\"这个字符,如果shp里有这个字符的话那么在sql文件里就有可能出错,特别是这个字符在单引号前边,因为他在sql语句里有转译的意思,比如:

INSERT INTO beijing_area VALUES('0','拒马河\','Unknown Area Type',........

这 里的‘拒马河’是地名,后边的‘\’不知道是有意还是无意加的,但是在这里就会报错,因为“\'”会被解释成单引号而少了一个闭合前面的单引号,所以查找 把一些有错误的“\”去掉,注意不要全改,因为有的是真正有用的如地名中有英文‘get's’,这个在sql中就会被转成‘get\'s’,所以不要全 改。

再有一个问题就是转完的数据有多余的

GeometryFromText('MULTIPOLYGON(((115.640050000000002 39.639260000000000 0.000000000000000 ,115.639830000000003 39.639209999999999 0.000000000000000 ,.............

上边的就是空间数据类型的数据,但是正常的只有两个数字就可以,这个转换完的多了个0.000000000000000 把所有的这个都去掉,把改完的sql文件保存一下,这次再导入就应该没问题了。

因为我对这个空间数据的了解也不是很深我只知道这么改可以了,不过具体为什么会有这样的错误我还是不太清楚。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多