Datenweitergabe bei relativ großen Projekten

Hallo,
habe Probleme bei der Weitergabe von mehreren (relativ großen, GIS 3.x) Projekten. Die Umwandlung mit dem skript "avlaptop" klappt nicht, obwohl ich alle unnötigen Inhalte (Bildkataloge, Layout usw. aus der apr entfernt habe.
Gibt es weitere Möglichkeiten Projekte sinnvoll weiter zu geben??
Klingt zwar banal. Aber versuch mal DVD oder ne externe Wechselfestplatte. Je nach Größe.
Wenn du mit der weitergabe meinst die Projekte als relativ-Pfade abzuspeichern kann ich dir das folgende Skript empfehlen.
Wenn es allein um die Datenmenge geht würde mich interessieren welche Größe deine Projkte denn haben.
Gruß
Daniel

'apr2laptoporcd2.ave
'Author, Juergen Evert
'Any Comments to JurgenEvert@aol.com

'This script
' - reads a projectfile
' - copies all theme files (Shapes, images, images of catalogs, tables and NEW coverages!!)
' to a separate folder
' - creates a new project file with relative paths

'Notes:
' - remove Extensions before, the extension file will be copied too,
' but may be they don't work correctly, best: reset to system defaults
' - check for image catalogs, they may have a size of some GB
' - Check the layouts which aren't connected with the view.
' - So you can use the project on any Computer, copy the new projectfile
' to a laptop or burn it on CD
' - if you save this project in Arcview it gets absolute paths


'get the project
Altaprdatei=filedialog.show("*.apr","project files","copy project")
if(altaprdatei=nil) then return nil end
Altapr=linefile.make(altaprdatei,#FILE_PERM_READ )
neuaprdatei=altaprdatei.getbasename.asstring
neuaprdatei=(neuaprdatei.left(neuaprdatei.count-4)+"-1.apr").asfilenam e
neuapr=filedialog.put(neuaprdatei,"*.apr","new project file")
if(neuapr=nil) then
msgbox.error("Can't write!","")
return nil
end

'create the folder for the files
bn=neuapr.getbasename.asstring
neuverz="/"+bn.left(bn.count-4)+"-files/"
pfad=neuapr.returndir.asstring+"\"+bn.left(bn.count-4)+"-files"
hptverz=pfad

theDLL=dll.make(filename.FindInSystemSearchPath("kernel32.dll"))
Prozedur=dllproc.make(TheDLL,"CreateDirectoryA",#DLLPROC_TYPE_INT32,{# DLLPROC_TYPE_STR ,#DLLPROC_TYPE_POINTER })
xc=Prozedur.call({pfad,nil})

neuProjekt=linefile.make(neuapr,#FILE_PERM_write )
if(neuprojekt=nil) then return nil end
zeilen=altapr.getsize
APRZEILEN={}
Altapr.read(APRZEILEN,zeilen)
'l2={}
imgcatlist={}
infodirlist={}
n=0
issql=false
imgcatalog=false
av.ShowMsg ("Creating new project file...")
cov=false
'reading the original project file
overinf=0
oi=""
for each Zeile1 in APRZEILEN
progress = (n/zeilen) * 100
av.setstatus(progress)
n=n+1
if(Zeile1.contains("OwnerClass:")) then
if(Zeile1.contains("CovSrc".quote)) then
cov=true
else
cov=false
end
end


if(Zeile1.contains(9.aschar+"path:"+9.aschar)) then 'if path line
altquelle=Zeile1.astokens("""").get(1) 'extract path string
if (cov=true) then 'if last source was Coverage
hh=altquelle.astokens("/")
if(hh.count<2) then
hh=altquelle.astokens("\")
end
thedir=hh.get(hh.count-1)
oi=altquelle.asfilename.returndir.asstring 'get main coverage dir
oi2=oi.astokens("/")
if(oi2.count<2) then
oi2=oi.astokens("\")
end
oi=oi2.get(oi2.count-1) 'main coverage dir

neueintrag=9.aschar+"path:"+9.aschar+(".."+neuverz+oi+"/"+thedir).quot e 'create new APR-line

if((altquelle.contains("/info/")) or (altquelle.contains("\info\")))then ' if info path
oi=altquelle.asfilename.returndir.returndir.asstring
oi2=oi.astokens("/")
if(oi2.count<2) then
oi2=oi.astokens("\")
end
oi=oi2.get(oi2.count-1) '=info path
neueintrag=9.aschar+"path:"+9.aschar+(".."+neuverz+oi+"/info/"+thedir) .quote' new apr-line

end
neuprojekt.writeelt(neueintrag) 'write line to project file

else 'other path lines
altdir=altquelle.asfilename.getbasename.asstring
altf=altquelle.asfilename.getbasename.asstring
neueintrag=9.aschar+"path:"+9.aschar+(".."+neuverz+altf).quote
if(Zeile1.contains("$HOME".quote)) then neueintrag=Zeile1 end
neuprojekt.writeelt(neueintrag)
'l2.add(Zeile1)
end
else
neuprojekt.writeelt(Zeile1)

end

'check connection
if((Zeile1.contains(9.aschar+"Connect:"+9.aschar)) and (issql=false))then
msgbox.info("there is a SQL-Connection in the project, this will not work on other computers!","")
issql=true
end
'check for image catalog
if(Zeile1.contains("OwnerClass:"+9.aschar+("imgcat".quote))) then
w=msgbox.yesno("There is an image catalog in the project, all images must be copied, may be some GigaByte. Continue creating new project?","Image catalog",false)
if(w=false) then
neuprojekt.close
file.delete(neuprojekt)
av.clearstatus
return nil
end
end

end 'for Zeilen
neuprojekt.close
l3={}
n=0
vh=false
av.ShowMsg ("Creating file list..")
Catdateien={}

'creating the list of files to be copied
covdir={}
cov=false
overinf=0
oi=""
for each Zeile in APRZEILEN
progress = (n/zeilen) * 100
av.setstatus(progress)
n=n+1
if(Zeile.contains("$HOME".quote)) then continue end
if(Zeile.contains("OwnerClass:"+9.aschar+"imgcat".quote)) then imgcatalog=true end
if(Zeile.contains("OwnerClass:")) then
if(Zeile.contains("CovSrc".quote)) then
cov=true
else
cov=false
end
end


if(Zeile.contains(9.aschar+"path:"+9.aschar)) then
Pfad=Zeile.astokens("""").get(1)
'msgbox.info(pfad.asstring,"pfad")
if(cov=false) then
for each m in imgcatlist
if(m=Pfad) then vh=true end
end
if(vh=true) then vh=false continue end

'Imagecatalog######################################################### #
if(imgcatalog=true)then
imgcatlist.add(Pfad)
'creating new image catalog
df=(filename.gettmpdir.asstring+"\"+Pfad.asfilename.getbasename.asstri ng).asfilename
file.copy(Pfad.asfilename,df)
z=vtab.make(df,true,false)
z.seteditable(true)
feld=z.findfield("image")
for each ds in z
pic=z.returnvalue(feld,ds)
Catdateien.add(pic)
if(pic.right(4)=".tif") then
k=pic.substitute(".tif",".tfw")
if(k.asfilename.isfile) then
Catdateien.add(k)
end
end
if(pic.right(5)=".tiff") then
k=pic.substitute(".tiff",".tfw")
if(k.asfilename.isfile) then
Catdateien.add(k)
end

end
if(pic.right(4)=".jpg") then
k=pic.substitute(".jpg",".jpgw")
if(k.asfilename.isfile) then
Catdateien.add(k)
end

end
np=neuverz.right(neuverz.count-1)+"imgcat/"+pic.asfilename.getbasename .asstring
'msgbox.info(np,"np")
'msgbox.listasstring(catdateien,"","")
z.setvalue(feld,ds,np)
end 'for
z.flush
z.seteditable(false)
imgcatalog=false
l3.add(df.asstring)
continue
end 'imgcat ###################################################################### ####
l3.add(Pfad)
if(Pfad.right(4)=".shp") then
k=Pfad.substitute(".shp",".shx")
l3.add(k)
end

if(Pfad.right(4)=".tif") then
k=Pfad.substitute(".tif",".tfw")
if(k.asfilename.isfile) then
l3.add(k)
end
end

if(Pfad.right(5)=".tiff") then
k=Pfad.substitute(".tiff",".tfw")
if(k.asfilename.isfile) then
l3.add(k)
end
end

if(Pfad.right(4)=".jpg") then
k=Pfad.substitute(".jpg",".jpgw")
if(k.asfilename.isfile) then
l3.add(k)
end
end

if(Pfad.right(4)=".sid") then
k=Pfad.substitute(".sid",".sdw")
if(k.asfilename.isfile) then
l3.add(k)
end
end

'here you can add some other formats of worl files
'if(Pfad.right(4)=".xxx") then
'k=Pfad.substitute(".xxx",".yyy")
'if(k.asfilename.isfile) then
'l3.add(k)
'end
'end
else '=coverage
hh=Pfad.astokens("/")
if(hh.count<2) then
hh=altquelle.astokens("\")
end
oi=pfad.asfilename.returndir.returndir.asstr
Hallo,
Danke für die Tips aber es geht wircklich um die Weitergabe mit relativen Pfaden.
Mit dem beigefügten skript habe ich schon mehrmals versucht das Projekt umzuwandeln aber es funktioniert nur bei kleinen Projekten (so bis max. 3-4 MB apr Größe, sind die Projekte größer so bis max. 15 MB klappt die Umwandlung in relative Pfade nicht mehr.
Gibt es den eine sinnvolle Möglichkeit z.B. manuell die Pfade aus der apr zu löschen?

Liebe Grüße Susanne
Moin,

was heißt, die Umwandlung klappt nicht mehr? bricht er mit einer Fehlermeldung ab? Haen auch schon größte Projekte mit Jürgens script umgewandelt, es dauert halt ein paar minuten oder Stunden, je nachdem, was zusammenkopiert werden muss. Falls Du die Dateien nicht erst zusammenkopieren brauchst, reciht es aus, die absoluten pfade rauszuhauen, entweder mit dem Editor oder z.B. mit dem apr-Tool http://arcscripts.esri.com/details.asp?dbid=501074224
Gruß
André