La libreria PROJ ha nozione del sistema di riferimento EPSG:3003 ed EPSG:3004, (Monte Mario / Italy zone 1 e Monte Mario / Italy zone 2 rispettivamente). Per questi sistemi di riferimento non sono inclusi parametri correttivi per la trasformazione in EPSG:4326 (WGS84). Questo comporta uno shift che può arrivare al centinaio di metri.
È possibile creare delle proiezioni PROJ personalizzate che portano l'accuratezza della trasformazione nel range dei 3-4 metri per l'Italia, è sufficiente aggiungere il parametro correttivo +towgs84
:
+towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 | Italy (Peninsular Part), Accuracy 3-4m |
---|---|
+towgs84=-168.6,-34.0,38.6,-0.374,-0.679,-1.379,-9.48 | Italy (Sardinia), Accuracy 3-4m |
+towgs84=-50.2,-50.4,84.8,-0.690,-2.012,0.459,-28.08 | Italy (Sicily), Accuracy 3-4m |
Questo porta alla definizione di quattro nuovi sistemi di riferimento: Italia zona 1, Italia zona 2, Sardegna e Sicilia.
Il pacchetto Debain proj-data fornisce il file /usr/share/proj/epsg (fino a Debian 11 Bullseye, bisogna scoprire in Debian 12 Bookworm come si fa ).
Queste sono le definizioni da aggiungere al file /usr/share/proj/epsg. Vengono usati i codici EPSG da 40000 a 40003, riservati per definire sistemi personalizzati:
# Italy mainland zone 1 GB Roma40 <40000> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs <> # Italy mainland zone 2 GB Roma40 <40001> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs <> # Italy Sardinia GB Roma40 <40002> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0.374,-0.679,-1.379,-9.48 +no_defs <> # Italy Sicily GB Roma40 <40003> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.690,-2.012,0.459,-28.08 +no_defs <>
Se vogliamo definire questi sistemi in un database PostGIS, ecco le INSERT da fare nella tabella spatial_ref_sys
:
INSERT INTO spatial_ref_sys VALUES (40000, 'EPSG', 40000, 'PROJCS["Italy mainland zone 1 Gauss-Boaga Roma40",GEOGCS["Monte Mario",DATUM["Monte_Mario",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],AUTHORITY["EPSG","6265"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4265"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",1500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","3003"]]', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs '); INSERT INTO spatial_ref_sys VALUES (40001, 'EPSG', 40001, 'PROJCS["Italy mainland zone 2 Gauss-Boaga Roma40",GEOGCS["Monte Mario",DATUM["Monte_Mario",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],AUTHORITY["EPSG","6265"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4265"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",2520000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","3004"]]', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs '); INSERT INTO spatial_ref_sys VALUES (40002, 'EPSG', 40002, 'PROJCS["Italy Sardinia Gauss-Boaga Roma40",GEOGCS["Monte Mario",DATUM["Monte_Mario",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],AUTHORITY["EPSG","6265"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4265"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",1500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","3003"]]', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0.374,-0.679,-1.379,-9.48 +no_defs '); INSERT INTO spatial_ref_sys VALUES (40003, 'EPSG', 40003, 'PROJCS["Italy Sicily Gauss-Boaga Roma40",GEOGCS["Monte Mario",DATUM["Monte_Mario",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],AUTHORITY["EPSG","6265"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4265"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",1500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","3003"]]', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.690,-2.012,0.459,-28.08 +no_defs ');