[Gfoss] Traspunto, dove scaricare l'ultima versione?

luca_manganelli a comune.trento.it luca_manganelli a comune.trento.it
Mer 3 Ago 2011 10:54:00 CEST


gfoss-bounces at lists.gfoss.it scritti il 03/08/2011 10.19.43

> Ciao a tutti,

> GDAL\OGR[1] è disponibile su Win e linux; l'utility ogr2ogr[2] consente
> la trasformazione tra sistemi di coordinate (opzioni -a_srs EPSG:3003 e
> -t_srs EPSG:32632) e DXF[3] è tra i formati supportati (relata refero,
> non ho mai convertito un DXF con ogr2ogr).

OGR non supporta la riproiezione dei DXF.

Inoltre, non sempre per la riproiezione dei SHP è sufficiente indicare il
SRS, bisogna aggiungere ulteriori parametri come la traslazione, la
rotazione e il fattore di scala.

Un esempio per quanto riguarda Trento, con il passaggio dal EPSG:3003 a
EPSG:25832 (UTM - ETRF 1989 32N):

ogr2ogr -f "ESRI Shapefile" -s_srs "+proj=tmerc +ellps=intl +lat_0=0
+lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +units=m
+towgs84=-117.231939820,-29.243113167,-7.955969586,-0.353472059,-2.843197642,-1.534991981,-17.961969706"
  -t_srs "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m
+no_defs  OUTPUTSHP SOURCESHP

l'errore massimo, rispetto ad una riproiezione fatta con ArcMap, è di mezzo
millimetro sull'asse X e meno sulle Y.


Per quanto riguarda i DXF, qui usiamo una procedura in python che legge un
DXF e genera un nuovo DXF riproiettato
secondo i parametri sopracitati (p.s. Python deve girare su architettura a
32 bit, non a 64!):


#impostazione coefficienti
gbe89alfa = 0.999981929972442
gbe89beta = -8.08884040434622 / 1000000
gbe89p = 82.9213694651314
gbe89q = -1000040.08814668
#apertura file input e output
inpFile = open(nomeDxfInput, "r")
# try:
outFile = open(str (nomeDxfOutput), "w")
while 1:
  riga = inpFile.readline()
  outFile.write(riga)
  #considero solo "punti primari" ed "altri punti"
  if riga == " 10"+'\n' or riga == " 11"+'\n' or riga == " 12"+'\n' or riga
== " 13"+'\n' or riga == " 14"+'\n' or riga == " 15"+'\n' or riga == "
16"+'\n' or riga == " 17"+'\n' or riga == " 18"+'\n':
    x = (inpFile.readline())
    xgb = float(x)
    x = x.split("\n") [0]
    quantidecx = (len(x) - (x.rfind(".") + 1))
    successiva = inpFile.readline()
    y = inpFile.readline()
    ygb = float(y)
    y = y.split("\n") [0]
    quantidecy = (len(y) - (y.rfind(".") + 1))
    #considero solo coordinate cartografiche
    if xgb > 1000000 and ygb > 5000000 :
      xutm = (float(gbe89q + xgb * gbe89alfa - ygb * gbe89beta))
      xutm = str(round(xutm,quantidecx))
      outFile.write(xutm +'\n')
      outFile.write(successiva)
      yutm = (gbe89p + (ygb * gbe89alfa) + (xgb * gbe89beta))
      yutm = str(round(yutm,quantidecy))
      outFile.write(yutm +'\n')
    else:
      outFile.write(str(xgb)+'\n')
      outFile.write(successiva)
      outFile.write(str(ygb)+'\n')
  if not riga:
    break
# chiusura files e cancellazione file rinominato
inpFile.close()
outFile.close()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20110803/2b015b31/attachment.html>


Maggiori informazioni sulla lista Gfoss