【Geoda】批量导入数据教程
一、问题
最近又用起 Geoda 做热点图了,这软件好处就是上手快傻瓜式,中文兼备,先不说功能没 GIS 多,最大的问题就是没法批量导入数据,像用 BigData 的模型动不动就几千个数据手一个个敲要累死,踩了一些坑总结了一套最快导入数据的方式。
二、分析
正常一个地图包都有 .shp
,.dbf
等后缀结尾的文件,最主要的就是这两个,.shp
是地图,按内置 ID
作图,跟你的 主键
没关系。.dbf
就是表单数据,可以用 wps 打开,但是用了 wps 就会导致数据类型改变,在做无用功,根本导入不进去。
注:
如果你只需要几个 键 的数据,在 Geoda 里添加 键(变量),再用 wps 打开 .dbf
表单填充数据,单元格改成数值格式,保存就可以在 Geoda 里用了,不需要看如下教程。
三、解决批量导入
-
因为
.dbf
是已经过时的数据库表单,所以要数据库软件来管理。这里下一个小巧的数据库管理软件就够了,用来改变数据类型,不需要已经被淘汰的access
和什么高大上的编辑器,下一个DBF Commander
即可,5 M 左右。另外还需要 Python ,后面批量生成语句用,如果不会 Python 可以考虑 C 、Java 等马上能上手的语言。 -
先用
DBF Commander
打开.dbf
表单库,开始添加 键 ,操作的时候会有没用的提示你去官网购买高级版,点否无视即可。
Python 批量拼接生成 SQL 添加键语句:
ALTER TABLE "你 .dbf 文件的完整路径" ADD 你的键名称 float(10);
举例:
ALTER TABLE "D:\Geoda\map\china.dbf" ADD Y1975 float(10);
两个地方都是需要你根据需求拼接的,注意完整路径的引号不要少了,尾部必须要有分号!另外尾部还要多生成一个换行 \n
,两个语句之间必须有空行,因为 DBF Commander
不识别连续行的 SQL ,必须有空行。
生成完了放到 DBF Commander
下面的控制台,全选点执行或者按 F5
,键 就做好了。
点开软件左上一排按钮,查看 键 结构,把表单的类型换成 dBase Plus
,就可以了,如果你不换,wps 都打不开。
- 用 wps 打开
.dbf
,在已经批量添加的 键 下面大批量导入数据,有两个注意点:
(1)上面说了 .shp
是按本身的 ID
来划分区域代码的,不是你的 主键
(主键一般是 ID
),你改掉这个 .dbf
里的 ID
还是把 .dbf
的行顺序换了都没用,不要改 .dbf
的顺序。Geoda 这个软件原来地图包是什么顺序,你就要用什么顺序。
(2)注意粘贴完了,右键你刚刚粘贴数据的单元格调成数值格式的单元格,保留位数按自己的情况来,不然又回到 整型
了,浪费时间。之后保存文件。
- 用
DBF Commander
打开.dbf
文件,批量执行换键类型的 SQL ,还是要自己生成,拼接:
ALTER TABLE "你 .dbf 文件的完整路径" ALTER 你的键名称 F(8,2) NOT NULL;
举例:
ALTER TABLE "D:\Geoda\map\china.dbf" ALTER Y1975 F(8,2) NOT NULL;
注意和上面一样,要语句之间有空行,不然批量执行不了。
生成好放控制台跑完之后,再进 键 结构管理那边把你的 主键
(一般是 ID ,不过这个 主键
也是你自己假设的,不是真正 .shp
里的那个真主键,主要是改了后续分析用这个作为代号) 类型改成 Int
,保存之前要改成 dBase Plus
格式。
- 用 Geoda 打开就是做好的数据了,直接开始分析
Moran指数
之类的就完事了,如果还要添加数据,按这个逻辑来即可。
四、总结逻辑
整体逻辑就是先批量在能 DBF 管理的软件里添加键,再 wps 导入,wps 会把你的数据结构给改了,你再把键的类型改成 浮点型
就可以了。
注:
(1)这边有个坑,为什么第一次 SQL 插入键的时候不定义 NOT NULL ,第二次改回 浮点型 的时候才定义 NOT NULL ,因为 DBF Commander
他不支持,研究半天浪费时间。
(2)懂 dBase
的可以用其他的数据库管理器,执行 SQL 都一样的(保证你的管理器可以批量执行 SQL),因为这个数据库太老了,很多软件也都很简陋不堪也不友好。
(3)假如你的 主键
(这个是你分析用的,不是真主键,所以你不能改 .dbf
的顺序,那原有的顺序和你的数据排序不一样怎么办?),解决方法是编程把你的数据行数调换一下,把原来能支持排序的名字拷贝出来,读写文件两个 for
就能解决,你可以不用现学习 Python 的 csv
库,直接读写数据中间插入 ,
就是分割了,具体你可以 记事本
或者 Notepad++
打开 csv
的表查看结构。
五、后记
Geoda 导入数据实在是太无力了,还有操作变量也很不友好,作者也很久不更新了。
但是 Geoda 优点也是有的,操作简单,有中文支持,轻量化,作图也可以,我个人还是比较喜欢 Geoda 。
上一篇: 网络查询简单几步 便知三星手机的真伪
下一篇: 金秀贤与全智贤的三星广告背景音乐是什么