<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">пн, 17 дек. 2018 г. в 15:23, Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> For using proj6 in full looks like it requires redesign in spatial_ref_sys<br>
> table, dropping it non-user part of it and relying on internal proj6<br>
> database?<br>
<br>
That's a good question. You could at least conceptually imagine to dynamically <br>
populate part of the table: perhaps foreign table mechanism to automatically <br>
generate entries that come from the PROJ database by using the PROJ API, <br>
normal table for the user entries, and spatial_ref_sys being a view of the two <br>
?<br></blockquote><div><br></div><div>So, what we have now in spatial_ref_sys:</div><div> - EPSG and other registries codes and their proj4text.</div><div> - some user entries.</div><div> - internal entries for _ST_BestSRID or how is it called, to perfrom geography-by-geometry-engine.</div><div> - clever users editing preexisting entries.</div><div> - I think there are some manual patches over the database.</div><div><br></div><div>Who needs it:</div><div> - ST_Transform, to know how to transfrom.</div><div> - userland software that wants to know what is that they just read from db.</div><div> - I'm not sure what happens in Raster.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I just want to warn that iterating over all CRS from the PROJ database and <br>
export them as WKT and PROJ string takes a few seconds, so the above would <br>
only perform well if clever instanciation can be done (that is if you do <br>
SELECT * FROM spatial_ref_sys WHERE srid = 12345, only 12345 will only be <br>
generated on the fly)<br></blockquote><div><br></div><div>Can we live without proj at all? I believe most web map cases are covered by SRID 0, 4326, 3857, 900913 and rarely 3395. All those have transformations in one-two lines of math.</div><div><br></div><div>If we can do some wrapper similar to what LWGEOM does to GEOS, I think then we can survive the migration and juice some performance profits from it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> Looks like we have to do it since proj7 is going to drop old way.<br>
<br>
You could still have a full spatial_ref_sys table. It is just that it has a <br>
risk of being unsynchronized with the PROJ database.<br></blockquote><div><br>What happens if it is? How large is error margin, who is affected?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another thing to be aware of is that the generated WKT1 and PROJ strings will <br>
now lack in a lot of cases the TOWGS84 clause when there are several candidate <br>
datum transformations from the CRS to WGS84 (previously the libgeotiff script <br>
that created the GDAL .csv files would select the TOWGS84 transform whose area <br>
of use was the largest). The new way will be to pass to <br>
proj_create_crs_to_crs() an optional area of interest, and it will determine <br>
from the database the more appropriate datum transformation.<br>
<br>
You also have the question to which part of the spatial_ref_sys entry you <br>
consider authoritative. The auth_name+auth_srid, the srtxt, the proj4text ? <br>
Currently PostGIS must certainly use the proj4text to use pj_init*() + <br>
pj_transform(). With PROJ 6, you can potentially use the 3 possibilities with <br>
proj_create_crs_to_crs(), but if you use the proj4text, you will not be able <br>
to benefit from the late-binding capabilities.<br></blockquote><div><br></div><div>Can we add a constraint to have just one of them filled at all times?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> <br>
> Looks like PostGIS is going to have mandatory transitive SQLite dependency<br>
> via Proj.<br>
<br>
Yes<br></blockquote><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Even<br>
<br>
-- <br>
Spatialys - Geospatial professional services<br>
<a href="http://www.spatialys.com" rel="noreferrer" target="_blank">http://www.spatialys.com</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Darafei Praliaskouski<br>Support me: <a href="http://patreon.com/komzpa">http://patreon.com/komzpa</a></div></div>