connection between python and postgreSQL

该文章纯粹自学积累,如有雷同,十有八九是巧合 :D

connection between python and postgreSQL_第1张图片
Screen Shot 2016-06-03 at 14.34.13.png

首先需要在 http://metro.teczno.com/ 下载所需地区的完整地图信息 .pbf 格式,然后用osmconvert 转化为 .osm 格式,再使用 osmfilter 抓取所需要的信息。这两个工具只支持在windows OS运行,具体操作如下。

osmconvert

C:\Windows\system32>osmconvert C:\Users\caochu\Downloads\singapore.pbf >C:\Users\caochu\Downloads\ccc.osm

annotation

osmconvert 表示调用转换的命令
其后是需要转换的源文件详细位置
space> 之后跟生成的文件位置和filename

osmfilter

C:\Windows\system32>osmfilter C:\Users\caochu\Downloads\ccc.osm
--keep="highway=" -o=ddd.osm

annotation

osmfilter 表示调用过滤的命令
其后是即将进行过滤的详细文件地址
--keep="highway=" 表示在过滤过程中保存所有的以highway为标签的元素,这样就把所有的道路保存了下来
-o= 表示需要输出的内容
该命令可以成功执行,但是希望其保存的ddd.osm文件并没有保存,而且不会报错,主要是因为没有规定新生成的文件地址。改为如下命令即可。

只要在 -o= 后面添加详细地输入地址即可完成过滤,生成的文件在填写的地址中。

C:\Windows\system32>osmfilter C:\Users\caochu\Downloads\ccc.osm
--keep="highway=" -o=C:\Users\caochu\Downloads\ddd.osm

之后需要将.osm文件导入至postgreSQL中,可惜windows平台我始终没有调试好python与postgreSQL之间的联系,只能转战Mac平台,详细的操作过程如下。

postgreSQL configureation

psotgres APP side: open psql terminal

error:

CCMac:~caochu$'/Applications/Postgres.app/Contents/Versions/9.5/bin'/psql -p5432
psql: FATAL: database "caochu" does not exist

solution:

CC:~ caochu$ sudo -u postgres createuser owning_user

next step:

CC:~ caochu$ psql osm

import OSM into psql:

osm=> osm2pgsql -s -U osm -d osm/Users/caochu/Downloads/map.osm

iTerm terminal:

CC:~ caochu$ osm2pgsql -s -U osm -d osm/Users/caochu/Downloads/map.osm.xml

error:

osm2pgsql SVN version 0.88.1 (64bit id space)
Using built-in tag processing pipeline
Osm2pgsql failed due to ERROR: Error: Connection to database failed: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

solution:

CC:~ caochu$ mkdir /var/pgsql_socket/

error:

mkdir: /var/pgsql_socket/: Permission denied

solution: add sudo in front of your commond

CC:~ caochu$ sudo mkdir /var/pgsql_socket/
mkdir: /var/pgsql_socket/: File exists

next step

CC:~ caochu$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

error

ln: /var/pgsql_socket//.s.PGSQL.5432: Permission denied

solution

CC:~ caochu$ "sudo" ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

import osm map into postgreSQL

CC:~ caochu$ osm2pgsql -s -U postgres -d osm /Users/caochu/Downloads/map.osm
osm2pgsql SVN version 0.88.1 (64bit id space)

error:

Reading in file: /Users/caochu/Downloads/map.osm
error while opening file /Users/caochu/Downloads/map.osm

solution: add .xml at the end of your map like map.osm.xml

CC:~ caochu$ osm2pgsql -s -U postgres -d osm /Users/caochu/Downloads/map.osm.xml

successfult indicator:

Osm2pgsql took 1s overall

pgAdmin 3 side

open and connect to the server

create the extension sql file which can be found in the folder on desktop
到这里基本上就结束了,把这些东西存放在一个地方,等到使用的时候再来看。

你可能感兴趣的:(connection between python and postgreSQL)