一、环境搭建:
(一)软件环境
- VMware Workstation 15 Pro
- Microsoft Windows XP Professional x64 Edition 版本 2003 Service Pack 2
- ArcGIS Desktop 10.1
- ArcSDE for Oracle 11g
- Oracle11g R2 win64 database
- Oracle11g R2 win32 client
- Python 2.7.2
- cx_Oracle 7.0.0
(二)测试数据
ArcObject java 自带测试数据 C:\Program Files (x86)\ArcGIS\DeveloperKit10.1\java\samples\data\usa
GCS_North_American_1983
WKID: 4269 权限: EPSG
- 点:wind.shp
- 线:ushigh.shp
- 面:states.shp
二、创建空间表
(一)SQL语句创建点图层表
import cx_Oracle
def sqlDML(sql, db):
cr=db.cursor()
cr.execute(sql)
cr.close()
db.commit()
db=cx_Oracle.connect('sde/sde@localhost/orcl')
sql = "create table TEST_WIND_SQL( objectid INTEGER not null, id INTEGER, velocity INTEGER, direction INTEGER, shape ST_GEOMETRY)"
sqlDML(sql, db)
控制台操作如下:

结果:

二、SQL语句插入测试点数据
sql = "INSERT INTO TEST_WIND_SQL (objectid, id, velocity, direction, shape) VALUES (0, -1, -2, -3, sde.st_geometry (0.00003, 0.00051, null, null, 4269))"
sqlDML(sql, db)

结果:


三、使用arcpy函数注册到地理数据库
adminwksp = r"数据库连接\连接到 localhost.sde"
arcpy.AcceptConnections(adminwksp, True)
arcpy.RegisterWithGeodatabase(r"数据库连接\连接到 localhost.sde\SDE.TEST_WIND_SQL")
结果:
报错信息是因为,插入数据的时候,我把objectid设置为了0值,sde表要求必须大于等于1。
使用Arcmap Desktop 查看:
成功!