[MapServer-dev] MapServer and PROJ Questions
Seth G
sethg at geographika.co.uk
Sat Apr 15 05:11:26 PDT 2023
Thanks Even that is very useful. I wasn't aware we could use projection blocks such as:
PROJECTION
"EPSG:4326"
END
PROJECTION
"ESRI:54009"
END
My test Mapfiles run fine with the PROJECTION examples above, but as you wrote (MapServer is "init=" addict) when requesting through WMS the "init=" is added by MapServer in a few places e.g. [1] which then causes an error. I'll debug further and see if I can find a workaround.
At some point do you think it would make sense for MapServer to only support PROJ9+? There are lots of places in the codebase checking for various versions of PROJ. Requiring a minimum version would allow consistent Mapfile PROJECTION block syntax too,
Seth
[1] https://github.com/MapServer/MapServer/blob/main/mapfile.c#L1378
--
web:https://geographika.net
twitter: @geographika
On Sat, Apr 15, 2023, at 1:00 PM, Even Rouault wrote:
> Hi Seth,
>
> init=epsg:XXXX, as a way of doing a lookup in proj.db, is a legacy
> syntax that was kept only in PROJ >=6 for EPSG. For other authorities,
> PROJ only recognizes "AUTHORITY_NAME:CODE" for lookups in the database,
> which enforces the order axis of the CRS definition (so EPSG:4326 !=
> init=epsg:4326 since the former uses lat, long, whereas the later uses
> long,lat). This might require changes in MapServer which is quite init=
> addict.
>
>
>> 2. Everything works if I create a text file named ESRI and put it in the folder in the PROJ_DATA path. I also tried setting PROJ_DATA (and PROJ_LIB) to multiple folders to allow me to put custom projections in a different folder - as implemented at [2] and described at [3] - "Starting with PROJ 6, multiple directories can be specified. On Unix, they should be separated by the colon (:) character. on Windows, by the semi-colon (;) character."
>>
>> However this doesn't seem to pick up the custom projection file on Windows or Linux e.g. in the mapserver.conf file I set: PROJ_LIB "C:/MapServer/bin/proj9/share;C:/Temp"
>
> When setting through MapServer, this goes to a different code path using
> proj_context_set_search_paths()/OSRSetPROJSearchPaths() which require to
> have done the tokenization, whereas if you set it through a regular
> environment variable, this is PROJ itself that does the tokenization.
>
> Should be fixed per https://github.com/MapServer/MapServer/pull/6863
>
> Even
>
> --
> http://www.spatialys.com
> My software is free, but my time generally not.
More information about the MapServer-dev
mailing list