#####################################################################
# Geometria felülírása egy létező shp fájlból egy meglévő mdb fájlba
# Egyező id alapján
# arcgisscripting(9.3)
#####################################################################
# -*- coding: utf-8 -*-
import os
import arcgisscripting
workspace='C:\\MUNKA\\KOZOS\\Fetikovizig\\'
mdb=os.path.join(workspace,'teszt.mdb')
shp=os.path.join(workspace,'teszt_shp.shp')
fcs=os.path.join(mdb,'teszt_1')
gp=arcgisscripting.create(9.3)
gp.workspace=workspace
# FORRÁS:
# http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?id=1063&pid=980&topicname=SearchCursor_method
# http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=UpdateCursor_method
# http://gis.stackexchange.com/questions/4741/updating-a-points-geometry-based-on-geometry-of-another-feature-class
if gp.exists(shp) ==False or gp.exists(mdb)==False:
print 'Vagy az mdb vagy a shp nem létezik pls állítsd be az elérési útvonalat'
# Nézze végig a shapet
# Ehhez létre kell hozni egy serchcursor generátort
shp_rows=gp.SearchCursor(shp)
shp_row=shp_rows.Next() # meghívom a generátort
while shp_rows: # Az utolsó elemig
geom=shp_row.GetValue('Shape') # Leszedem a geometriát
id=shp_row.GetValue('id') # Leszedem az azonosítót
where = "OBJECTID" +'='+ str(id) # SQL lekérdezés OBJECTID az mdb default id mezője (a vicces az, ha searchcursort használok akkor már ugyanúgy kell pontosan formázni, ahogyan a select by locationban teszem)
fcs_rows=gp.UpdateCursor(fcs,where) # Létrehozom az updatecursor generátort, ami a where feltétel szerint szűrt már.
fcs_row=fcs_rows.Next() # meghívom a generátort (tekintve, hogy csak 1 obj van, így nem kell while
fcs_row.shape=geom # beállítom az új geometriát
fcs_rows.UpdateRow(fcs_row) # updatelek
del fcs_rows # törlöm az mdb updatecursorát
del shp_rows # törlöm a shp searchcursorát
A script innen letölthető
Nincsenek megjegyzések:
Megjegyzés küldése