备忘ogr读取PostgreSQL命令的写法

GIS
汗,本来以为记得挺清楚的,结果还是忘了
把PostGIS中的一张表转成GML,需要在命令中写sql,貌似网上就没有找到这方面的信息

ogr2ogr -f "GML" e:\target.gml 
PG:"host=localhost port=5432 dbname=template_postgis user=post password=gis" 
-sql "select * from res1_4m"


下面我做的这个python小程序倒是可以封装繁琐的PostgreSQL信息,它的功能限于从数据库中取出数据转换成其他格式。

#using "ogrpg.py FORMAT_NAME DST_DATASOURCE [SQL]" when running

import os,sys

ogrPath = r'D:\Program Files\FWTools\bin\ogr2ogr.exe'

pginfo = {}
pginfo['host'] = 'localhost'
pginfo['port'] = '5432'
pginfo['dbname'] = 'template_postgis'
pginfo['user'] = 'post'
pginfo['password'] = 'gis'

def pgPara():
 para = ''
 for i in pginfo.keys():
  para = para + i + '=' + pginfo[i] + ' ' 
 para = para.join('""')
 para = "PG:"+para
 return para
 
if __name__ == "__main__":
 argc = len(sys.argv)
 if argc !=3 and argc != 4:
  print 'argument: FORMAT_NAME, DST_DATASOURCE'
  #return;
 else:
  format_name = sys.argv[1].join('""')
  dst_datasource = sys.argv[2]
  sql = ''
  if argc == 4:
   sql = sys.argv[3].join('""')
  command = '-f '+ format_name + ' ' + dst_datasource + ' ' + pgPara() + ' -sql ' +sql
  print command
  if raw_input('Yes?[Y|N]') in ['Y','y']:
   print 't'
   os.spawnv(os.P_DETACH,ogrPath,('ogr2ogr',command))


还说最近有越来越多的朋友从Google或者Baidu来到的我的Blog,甚至我的同班同学,希望能对大家有点帮助吧,虽然我也很有限。。。
Tags: open-source  OpenGIS  ogr  PostGIS  PostgreSQL  

0 Responses to "备忘ogr读取PostgreSQL命令的写法"

Leave a Reply

Powered By Z-Blog 1.8 Arwen Build 81206 Themes Basic By Azrael Designed By Ben Swift
Login Feed Rss