Esto es lo que estaba buscando.
import arcgisscripting, os
import sys
gp = arcgisscripting.create(9.3)
gp.Workspace = "D:\\Workspace\\shapedata"
# With Files:
# r20010101.shp with Fields and Input like:
# FID,Shape,POINTID,D20010101
# 0, Shape, 1, 10
# 1, Shape, 2, 14
# r20020101.shp with Fields and Input like:
# FID,Shape,POINTID,D20020101
# 0, Shape, 1, 12
# 1, Shape, 2, 13
# r20020601.shp with Fields and Input like:
# FID,Shape,POINTID,D20020601
# 0, Shape, 1, 11
# 1, Shape, 2, 9
# r20030101.shp with Fields and Input like:
# FID,Shape,POINTID,D20030101
# 0, Shape, 1, 3
# 1, Shape, 2, 7
fcs = gp.ListFeatureClasses("", "POINT")
x=0
for fc in fcs:
outfc = "D:\\Workspace\\shapeout"
if x==0:
# just run once:
x=x+1
fc_old=fc #r20010101.shp
fn_old="D"+fc[1:-4] #D20010101
else:
# do this, as long as there are shapefiles in gp.workspace
# examples given here for the FIRST SpatialJoin
fc_new=fc # r20020101.shp
outfc=outfc+str(x) # D:\\Workspace\\shapeout1
fn_new="D"+fc[1:-4] # D20020101
fieldmappings = gp.CreateObject("FieldMappings")
vt = gp.CreateObject("ValueTable")
fieldmappings.AddTable(fc_old)
fieldmappings.AddTable(fc_new)
if x>1:
# This should prevent Fields "Join_Count", "Join_Co1", "Join_Co2"....
fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("Join_Count"))
gp.SpatialJoin(fc_old, fc_new, outfc, "#", "#", fieldmappings)
if x>1:
# delete temporary file e.g. shapeout1.shp after next loop
gp.delete_management(infc)
fc_old=outfc + ".shp" # D:\\Workspace\\shapeout1.shp will be joined in next loop with e.g. r20020601.shp
x=x+1
# The final Output will be 1 Shapefile with Fields and Input like:
# FID,Shape,POINTID,D20010101,D20020101,D20020601,D20030101
# 0, Shape, 1, 10, 12, 11, 3
# 1, Shape, 2, 14, 13, 9, 7
¡Como tengo 30 Pointfiles (150MB cada uno), esto toma bastante tiempo en mi computadora (no muy vieja), como 1-2 horas para cada SpatialJoin!
0 votos
Lo siento, lo olvidé, estoy usando ArcGis 9.3.1.
0 votos
Traté de juguetear con la idea usando OGR, convertí todo en spatial lite creo que luego de vuelta como un archivo shp. Voy a tratar de desenterrar algo de código
0 votos
Una pregunta \comment A no ser que los archivos de puntos originales contengan duplicados exactos dentro de sí mismos (es decir: r20010101.shp tiene 2 puntos en el mismo lugar con exactamente la misma información), ¿cómo vas a decidir qué duplicado borrar? Como has señalado, aunque el punto1 de r20010101.shp y el punto2 de r20010202.shp están en las mismas coordenadas, NO son duplicados completos ya que contienen datos diferentes...