[postgis-users] St_makevalid issue
Paul van der Linden
paul.doskabouter at gmail.com
Thu Mar 12 09:23:31 PDT 2020
I have a query that gives inconsistent results.
It almost seems like st_makevalid doesn't always produce the same results
given the same input, and sometimes even returns invalid geometries...
Results are
f;1159320407;"Bangladesh"
f;1159321073;"Mozambique"
f;1159316737;"Nord"
f;1159314827;"Uusimaa"
second run:
f;1159321073;"Mozambique"
t;1159315455;"Syddanmark"
t;1159314827;"Uusimaa"
t;1159317795;"Gerona"
third run:
f;1159321073;"Mozambique"
t;1159315455;"Syddanmark"
note the 't' in the second and third run...
Query:
SELECT ST_isvalid(simplifiedgeo2),* FROM (
SELECT
foo2.ne_id,
foo2.name,
CASE
WHEN ST_isvalid(foo2.simplifiedgeo) THEN foo2.simplifiedgeo
ELSE ST_makevalid(foo2.simplifiedgeo)
END AS simplifiedgeo2
FROM (
SELECT
ST_simplifypreservetopology(foo.geom,
LEAST(
ST_xmax(foo.shiftedgeo::box3d) - ST_xmin(foo.shiftedgeo::box3d),
ST_ymax(foo.shiftedgeo::box3d) - ST_ymin(foo.shiftedgeo::box3d))
) AS simplifiedgeo,
foo.ne_id,
foo.name,
foo.geom
FROM (
SELECT
natearth.ne_id,
natearth.geom,
natearth.name,
CASE
WHEN (
ST_xmax(ST_shiftlongitude(natearth.geom)::box3d) -
ST_xmin(ST_shiftlongitude(natearth.geom)::box3d))
<
(ST_xmax(natearth.geom::box3d) -
ST_xmin(natearth.geom::box3d)
) THEN ST_shiftlongitude(natearth.geom)
ELSE natearth.geom
END AS shiftedgeo
FROM (
SELECT
ne_10m_admin_0_countries_lakes.ne_id,
ne_10m_admin_0_countries_lakes.geom,
ne_10m_admin_0_countries_lakes.name
FROM natural_earth.ne_10m_admin_0_countries_lakes
UNION ALL
SELECT
ne_10m_admin_1_states_provinces_lakes.ne_id,
ne_10m_admin_1_states_provinces_lakes.geom,
ne_10m_admin_1_states_provinces_lakes.name
FROM natural_earth.ne_10m_admin_1_states_provinces_lakes
) natearth
) foo
) foo2
) as fff
WHERE NOT ST_isvalid(simplifiedgeo2)
Any advice on how to further debug this?
"POSTGIS="2.5.1 r17027" [EXTENSION] PGSQL="110" GEOS="3.7.0-CAPI-1.11.0
3.7.1" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.2.4, released
2018/03/19 GDAL_DATA not found" LIBXML="2.7.8" LIBJSON="0.12"
LIBPROTOBUF="1.2.1" (core procs from "2.5.0 r16836" nee (...)"
"PostgreSQL 11.2, compiled by Visual C++ build 1914, 64-bit"
Running on windows 64-bit.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20200312/77eaf04b/attachment.html>
More information about the postgis-users
mailing list