#encoding: utf-8
__author__ = 'Administrator'
import psycopg2
import ppygis
import datetime
import string
import sys
import logging
import GeowayLogger
reload(sys)
#中文错误
sys.setdefaultencoding( "utf-8" )
vLog = GeowayLogger.GeowayLogger("c://geoway2.log",logging.DEBUG)
vLog.start()
#postgis
#pgisCon = psycopg2.connect(database="postgis_21_sample",user="postgres",password="")
pgisCon = psycopg2.connect(database="postgis_21_sample",user="postgres",password="postgres",host="192.98.12.60",port="5432")
pgisCursor = pgisCon.cursor()pgisCursor.execute("create table IF NOT EXISTS  tianditupoi_agg(id integer PRIMARY KEY,geometry GEOMETRY)")
pgisCursor.execute("create table IF NOT EXISTS  tianditupoi_1( check (id >= 0 and id< 2500001) ) INHERITS (tianditupoi_agg)")
pgisCursor.execute("create table IF NOT EXISTS  tianditupoi_2( check (id >= 2500001) ) INHERITS (tianditupoi_agg)")
#创建分区表ID索引
pgisCursor.execute("CREATE INDEX tianditupoi_1_idindex on tianditupoi_1(id)")
pgisCursor.execute("CREATE INDEX tianditupoi_2_idindex on tianditupoi_2(id)")
#创建分区规则
pgisCursor.execute("CREATE RULE tianditupoi_insert_1 AS ON INSERT TO tianditupoi_agg WHERE (id >= 0 and id < 2500001) DO INSTEAD INSERT INTO tianditupoi_1 VALUES (NEW.id,NEW.geometry)")
pgisCursor.execute("CREATE RULE tianditupoi_insert_2 AS ON INSERT TO tianditupoi_agg WHERE (id >= 2500001 ) DO INSTEAD INSERT INTO tianditupoi_2 VALUES (NEW.id,NEW.geometry)")
pgisCon.commit()
#创建天地图要素分区表,并将数据进行转移
def fromTdtPoi2TdtPoiAg():#sql_txt = sqlite3.connect("c://POI.tdb")startTime = datetime.datetime.now();cusor = pgisCon.cursor()cusor.execute("select oid,st_astext(geom) as geometry from tianditupoi")#row = cusor.fetchone()i = 0;for _row in cusor.fetchall():#print _row#_p = {"name":_row[1],"address":_row[2],"loc":[_row[9],_row[10]]}#poi.insert(_p)geo ="%s"%(_row[1])istr = 'insert into tianditupoi_agg(id,geometry)values(%d,%s)'%(string.atoi(_row[0]),"'"+geo+"'")i = i+1#logging.info("运行日志:%s"%(istr))#pgisCursor.execute("insert into poi(id,name,address,geometry)values("+(_row[0])+",'"+(_row[1])+"','"+(_row[1])+"',"+ppygis.Point(_row[9], _row[10])+")")pgisCursor.execute(istr)#一千条提交一次if i>= 50000 :pgisCon.commit()print("执行中....")i = 0#最后提交一次pgisCon.commit()endTime = datetime.datetime.now()print("数据导入总耗时:%s描述"%((endTime - startTime).seconds))print("插入完毕...")#更新空间参考IDpgisCursor.execute("update tianditupoi_1 set geometry = ST_SetSRID(geometry,4326)")pgisCursor.execute("update tianditupoi_2 set geometry = ST_SetSRID(geometry,4326)")#创建分区表空间索引pgisCursor.execute("create index tianditupoi2_geo_index on tianditupoi_2 using gist(geometry)")pgisCursor.execute("create index tianditupoi1_geo_index on tianditupoi_1 using gist(geometry)")print("空间索引创建完毕...")pgisCursor.close()pgisCon.commit()pgisCon.close()#进行数据导入
fromTdtPoi2TdtPoiAg()

Python访问PostGIS(建表、空间索引、分区表)相关推荐

  1. python操作sqlite3----创建表

    1. 导入包 import sqlite3 2.  创建连接 con = sqlite3.connetc('test.db') #不存在则创建 3.  获取数据库cursor对象 cur = con. ...

  2. 【MySQL高级】查询缓存、合并表、分区表

    [1] 查询缓存   MySQL的缓存机制简单地说就是缓存SQL语句和查询的结果,如果运行相同的SQL语句,服务器会直接从缓存中取到结果,而不需要再去解析和执行SQL语句.   查询缓存会存储最新数据 ...

  3. Python Web开发框架之Django篇——二、Django连接MySQL数据库以及建表的操作

    二.Django连接MySQL数据库以及建表的操作 准备工作:安装Python访问MySQL的模块 一.修改project同名目录下面的__init__.py文件 二.修改project同名目录下面的 ...

  4. 小技巧:用python迅速打印Java写 的Flink代码中的hive建表语句

    假设我们想要用Flink对hive进行读写, 并且其中一段代码如下: // 如果hive中已经存在了相应的表,则这段代码省略String hiveSql = "CREATE external ...

  5. python访问注册表_Python 操作注册表

    通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg:另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的 ...

  6. 利用python编写exe应用,实现excel文件输出建表sql文件。

    目录 一.excel文件内容如下: 二.生成如下sql: 三. 思路: 1.设计界面 2.界面分模块设计 2.1 模块一(数据库选择) 点击选择按钮会触发command后面的函数,同时会相应的返回va ...

  7. 将数据写入数据库:打开数据库,建库建表,通过php访问后台服务器(连接服务器(三种),选择数据库,设置字符集:防止数据乱码),通过php对数据库进行:增,删,改,查,操作

    前端表单设计以后,需要把数据写入数据库 将数据写入数据库:         如果涉及php.sql,wamp服务器必须打开         wamp里面有一个专门,图形化的移动窗口:          ...

  8. [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表

    [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表) 一. 算法&数据结构 1. 描述 2. 复杂度分析 3. 常见应用 4. 常用优化 二. 模板代码 0. 区间推平(lg ...

  9. hive 建表,分桶表(clustered by)、分桶且桶内排序(clustered by+sorted by)、分区表(partitioned by)、分区分桶一起用

    一.分桶表 1.建表语句 create table test_bucket_sorted ( id int comment 'ID', name string comment '名字' ) comme ...

最新文章

  1. Spark的安装和使用
  2. 深入了解SAP S4 HANA Business Partner【中英文双语版】
  3. Dynamics CRM2013 任务列表添加自定义按钮
  4. Linux vim显示/不显示行号
  5. oracle恢复drop建的表首次,案例:Oracle dul数据挖掘 没有备份情况下非常规恢复drop删除的数据表...
  6. android开发蓝牙是否可见开关_如何从后台开启android蓝牙的可见性以及始终保持可见性...
  7. java中处理异常怎么越过,java – Spring Batch – 异常不可跳过
  8. 聚焦BCS|吴云坤产业峰会演讲:用内生安全框架提升网络安全产值
  9. Oracle 索引的分类
  10. android消息处理机制原理解析
  11. 从魔兽世界到激战2看MMO网游角色成长
  12. hadoop中java部分练习_java私塾Hadoop实战-中高级部分 之 Hadoop RestFul
  13. 穿上就不想脱下!这款火爆ins的夏季凉鞋,防滑,抗污,速干不臭脚!让你秒变型男!...
  14. 敏捷转型行动笔记:内部敏捷教练培训资料分享——升华篇(持续学习与系统思考,成为好教练)
  15. 九宫格一条线连起来_9个圆圈用4条线连起来-九个点用四条线连接-数学-霍甲心同学...
  16. 更新Windows11出现错误0x80240022的解决方法
  17. 计算机语言学考研考什么,语言学及应用语言学考研有哪些内容-考研经验
  18. 使用jflash可以将芯片flash中的程序(16进制格式)读出来 jflsah软件在jlink驱动包里面
  19. trx40主板支持服务器内存,华硕发布TRX40系列主板:8内存插槽设计+64个PCIe 4.0通道...
  20. MATLAB调用python文件以及调用.exe文件方法

热门文章

  1. Docker安装tomcat出现404问题
  2. 共享主机与虚拟机文件方式一
  3. JavaScript 之arguments、caller 和 callee 介绍
  4. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...
  5. 浙江工商大学计算机专业有博士点吗,[浙江工商大学]统计学(博士点)
  6. Spring Security中关于认证授权的配置
  7. java jsch shell_仅在JSch shell通道中获取特定命令的输出
  8. 将tomcat设置成window自启动服务
  9. columns列:Rows 工作表上所有的行
  10. Oracle回收站解决误删除表