[postgis-users] Not able to use properly custom projection

Florian Nadler florian.nadler at cybertec.at
Thu Dec 16 03:39:47 PST 2021


Hi,

depending on the parameters you defined in spatial_ref_sys, PostGIS 
decides how to process the transformation, see 
https://blog.cleverelephant.ca/2019/02/proj4-postgis.html
Try to define proj4text only:

insert into public.spatial_ref_sys (srid,proj4text)
select 93004,proj4text from spatial_ref_sys where srid =3004;
update spatial_ref_sys set proj4text ='+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 
+ellps=intl +nadgrids= +units=m +no_defs' where srid =93004; Florian

Am 16.12.2021 um 10:57 schrieb andy:
> Hi,
> I have a NTV2 file, and it works properly if I hardcode the parameters 
> in the query:
>
> SELECT  ST_AsText(
>           ST_Transform(
>             ST_GeomFromText('POINT(13.335462 41.132282)',4326),3004
>           )
>         ) AS not_corrected,
>         ST_AsText(
>           ST_Transform(
>             ST_GeomFromText('POINT(13.335462 41.132282)',4326),
>  '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000
>  +y_0=0 +ellps=intl
>  +nadgrids=40441123_43581445_R40_F00.gsb +units=m +no_defs'
>           )
>         ) AS corrected;
>
> The output is:
>
> - POINT(2380292.276247742 4554785.392090227)
> - POINT(2380294.3337390865 4554784.22045453)
>
> If I insert it in PostGIS
>
> -- create new record
> insert into public.spatial_ref_sys (srid, auth_name, auth_srid, 
> srtext, proj4text) select 93004 , auth_name, auth_srid, srtext, 
> proj4text from spatial_ref_sys where srid = 3004;
>
> -- update it
> update spatial_ref_sys set proj4text = '+proj=tmerc +lat_0=0 +lon_0=15 
> +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl 
> +nadgrids=40441123_43581445_R40_F00.gsb +units=m +no_defs' where srid 
> = 93004
>
> and then I run
>
> SELECT  ST_AsText(
>           ST_Transform(
>             ST_GeomFromText('POINT(13.335462 41.132282)',4326),3004
>           )
>         ) AS not_corrected,
>         ST_AsText(
>           ST_Transform(
>             ST_GeomFromText('POINT(13.335462 41.132282)',4326),93004
>           )
>         ) AS corrected;
>
> I obtain two equal results, as if it did not apply what was read in 
> the proj string in spatial_ref_sys:
>
> - POINT(2380292.276247742 4554785.392090227)
> - POINT(2380292.276247742 4554785.392090227)
>
> I'm using PostgreSQL 13.5, compiled by Visual C++ build 1914, 
> 64-bit, 3.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
>
> I can't figure out what the problem could be. Why does it work 
> hardcoded and not via spatial_ref_sys?
>
> Thank you
>
> -- 
> ___________________
>
> Andrea Borruso
> website: https://medium.com/tantotanto
> 38° 7' 48" N, 13° 21' 9" E, EPSG:4326
> ___________________
>
> "cercare e saper riconoscere chi e cosa,
>  in mezzo all’inferno, non è inferno,
> e farlo durare, e dargli spazio"
>
> Italo Calvino
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-users

-- 
CYBERTEC PostgreSQL International GmbH
Römerstraße 19, A-2752 Wöllersdorf
Web:https://www.cybertec-postgresql.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20211216/604490f9/attachment.html>


More information about the postgis-users mailing list