[Portugal] Transformação de coordenadas no PostGis
Ricardo Sena
ricardogsena gmail.com
Terça-Feira, 31 de Janeiro de 2017 - 07:34:34 PST
Boa tarde,
Para além da solução apresentada pelo Pedro Duarte, outra forma de fazer
essa configuração pode ser através da seguinte forma:
1 - Copiar os ficheiros das grelhas (*.gsb) para a directoria C:\Program
Files\PostgreSQL\9.4\share\contrib\postgis-2.2\proj (neste caso para uma
instalação em windows; a path pode variar em função do local de instalação
dos Postgres)
2 - Actualizar as definições dos sistemas de coordenadas da base de dados
(na tabela spatial_ref_sys). Instruções de SQL (executar através do
pgAdmin):
----------------------------------------------------------------------------
--Grelhas
-- Actualização dos sistemas de coordenadas para fazer trasnformação
através do método das grelhas
-- 27492 - Hayford-Gauss, Datum 73, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1
+x_0=180.598 +y_0=-86.98999999999999 +ellps=intl
+towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +ellps=intl +lat_0=39.66666666666666
+lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.990 +units=m
+nadgrids=pt73_e89.gsb +no_defs'
where srid = 27492;
-- 27493 - Hayford-Gauss, Datum 73, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1
+x_0=180.598 +y_0=-86.98999999999999 +ellps=intl
+towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs '--
update spatial_ref_sys
set proj4text = '+proj=tmerc +ellps=intl +lat_0=39.66666666666666
+lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.990 +units=m
+nadgrids=pt73_e89.gsb +no_defs'
where srid = 27493;
-- 20790 - Hayford-Gauss, Datum Lisboa, Militar
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000
+y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon
+units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +lat_0=39.66666666666666
+lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl
+units=m +nadgrids=ptLX_e89.gsb +no_defs'
where srid = 20790;
-- 20791 - Hayford-Gauss, Datum Lisboa, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0
+ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m
+no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +lat_0=39.66666666666666
+lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m
+nadgrids=ptLX_e89.gsb +no_defs'
where srid = 20791;
-- 23029 - UTM, ED50
-- Definição original
-- '+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m
+no_defs '
update spatial_ref_sys
set proj4text = '+proj=utm +ellps=intl +zone=29 +units=m
+nadgrids=ptED_e89.gsb +no_defs'
where srid = 23029;
3 - Testar a configuração com alguns pontos de controlo (vértice geodésico
ESPINHEIRA):
-------------------------------------
--Testar os métodos de transformação de coordenadas
--Vértice Geodésico ESPINHEIRA
--Coordenadas IGP:
-- Datum 73
-- x = 28999.924
-- y = -135387.053
-- Datum LX
-- x = 29001.15
-- y = -135386.57
-- PT-TM06
-- x = 29002.41
-- y = -135385.95
-- Datum 73 -> Datum LX
select
ST_AsText(ST_Transform(ST_SetSRID(ST_Makepoint(28999.924,-135387.053),
27492), 20791));
-- Datum 73 -> PT-TM06
select
ST_AsText(ST_Transform(ST_SetSRID(ST_Makepoint(28999.924,-135387.053),
27492), 3763));
Envio em anexo ficheiro SQL com as instruções para actualização da
definição dos sistemas de coordenadas utilizados em Portugal (continente).
OBS: Em relação à solução apresentada pelo Pedro Duarte, no ficheiro excel
os sistemas de coordenadas estão configurados com os códigos de
identificação utilizados pela ESRI. O EPSG utiliza códigos diferentes
(27493, 20790, 20791)
Cumprimentos,
Ricardo Sena
Email: ricardo.sena at wkt.pt[image: logo_mini_wkt]
Tlm: 912 287 483
Site: http://www.wkt.pt
2017-01-31 14:40 GMT+00:00 Ana Catarina Ferreira Pinheiro <
catarina at cm-valedecambra.pt>:
> Olá boa tarde,
>
> Estou na fase de testes para a transformação do sistema de coordenadas
> Datum73 para o ETRS89 pelo método das grelhas da DGT.
> Alguém já fez essa transformação com os dados provenientes do
> Postgres/Postgis?
>
> Ao falar com alguns colegas vimos que tenho de exportar para shape (por
> forma a levar o gid e não descodificar os caracteres), depois transformar
> as coordenadas com o ntv2 do Qgis e exportar novamente para postgis. Este
> método é sem dúvida moroso ainda por cima não estou a conseguir converter
> em bloco os layers de cada esquema para shapefile com o comando de
> converter formato do GDAL.
>
> Alguém sabe alguma forma mais simples de proceder a esta transformação sem
> ser por estes passos todos? O ideal é ter um script para correr em postgis
> :)
>
> Obrigada
>
>
> --
>
> *Ana Catarina Pinheiro **Divisão de Planeamento, Ambiente e Gestão
> Urbanística - Informação Geográfica*
> Município de Vale de Cambra
> email: catarina at cm-valedecambra.pt
> web : http://www.cm-valedecambra.pt
> tel: (+351)256 420 510 <+351%20256%20420%20510>
> fax:(+351)256 420 519 <+351%20256%20420%20519>
>
>
> _______________________________________________
> Portugal mailing list
> Portugal at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/portugal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20170131/2bfc489f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: wkt.png
Type: image/png
Size: 11002 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20170131/2bfc489f/attachment.png>
-------------- next part --------------
----------------------------------------------------------------------------
--Grelhas
-- Actualização dos sistemas de coordenadas para fazer trasnformação através do método das grelhas
-- 27492 - Hayford-Gauss, Datum 73, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +ellps=intl +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.990 +units=m +nadgrids=pt73_e89.gsb +no_defs'
where srid = 27492;
-- 27493 - Hayford-Gauss, Datum 73, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs '--
update spatial_ref_sys
set proj4text = '+proj=tmerc +ellps=intl +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.990 +units=m +nadgrids=pt73_e89.gsb +no_defs'
where srid = 27493;
-- 20790 - Hayford-Gauss, Datum Lisboa, Militar
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m +nadgrids=ptLX_e89.gsb +no_defs'
where srid = 20790;
-- 20791 - Hayford-Gauss, Datum Lisboa, IGP
-- Definição original
-- '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m +nadgrids=ptLX_e89.gsb +no_defs'
where srid = 20791;
-- 23029 - UTM, ED50
-- Definição original
-- '+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs '
update spatial_ref_sys
set proj4text = '+proj=utm +ellps=intl +zone=29 +units=m +nadgrids=ptED_e89.gsb +no_defs'
where srid = 23029;
-------------------------------------
--Testar os métodos de transformação de coordenadas
--Vértice Geodésico ESPINHEIRA
--Coordenadas IGP:
-- Datum 73
-- x = 28999.924
-- y = -135387.053
-- Datum LX
-- x = 29001.15
-- y = -135386.57
-- PT-TM06
-- x = 29002.41
-- y = -135385.95
-- Datum 73 -> Datum LX
select ST_AsText(ST_Transform(ST_SetSRID(ST_Makepoint(28999.924,-135387.053), 27492), 20791));
-- Datum 73 -> PT-TM06
select ST_AsText(ST_Transform(ST_SetSRID(ST_Makepoint(28999.924,-135387.053), 27492), 3763));
Mais informações acerca da lista Portugal