{: .no_toc }
- TOC {:toc}
No solution so far Issues SQL given is overly complex and inefficient. But idea is right
Problem is to smooth a network of lines. Network is not fully noded, so smoothing causes touching lines to become disconnected.
Probably to node the network before smoothing. Not sure how to node the network and preserve IDs however!?
https://gis.stackexchange.com/questions/275057/how-to-find-good-meter-based-projection-in-postgis
Also https://gis.stackexchange.com/questions/341243/postgis-buffer-in-meters-without-geography
Also: https://trac.osgeo.org/postgis/ticket/4755 Has an example geometry which becomes invalid when transformed from SRID 3857 to 4326.
WITH sample AS (
SELECT ST_GeomFromText('MULTIPOLYGON(((2382720.17390635 9089461.95191981,2382367.6918707 9089034.6330938,2383639.33894183 9088936.19228217,2383491.66250535 9088320.85158849,2382449.73433542 9088378.30497631,2382055.93050479 9088845.95402014,2381571.89109492 9088566.99620937,2382909.16100587 9087525.07043225,2383385.00730122 9087713.76366274,2382367.6918707 9086433.9341019,2383007.61196353 9086589.80403919,2382892.75251293 9086056.52215661,2383387.76802459 9086009.53671596,2384109.85303357 9086307.94844515,2383500.05599495 9084868.129924,2384106.96985876 9084899.76660559,2383959.29342227 9083792.17446382,2384344.89300643 9083513.24218185,2383385.00730122 9082274.42190291,2382950.18223823 9082971.7746775,2381932.87793967 9082873.34378008,2382088.74749067 9084563.39240152,2382671.24899015 9084481.35648623,2382310.2621454 9085268.94495686,2381481.64438374 9084021.89443657,2381875.44821437 9082331.85126724,2382523.57255366 9081798.56835936,2381982.09228655 9079919.82309238,2381916.46944672 9081101.23196672,2381645.72931316 9081019.18678447,2381350.37644019 9078295.40449812,2380538.16717147 9079558.84194849,2381055.03469917 9081757.55388556,2380267.42703791 9082643.61171947,2380710.45634737 9083168.68945391,2379931.06406453 9083021.01509475,2379233.7142464 9083759.36841078,2378442.67794482 9082959.88657981,2378604.00215088 9083424.05072713,2377563.78830111 9083562.16830069,2377341.87289622 9083907.25370813,2377807.53345815 9084052.13288586,2376895.52626593 9084309.0425308,2376862.720412 9084932.57788238,2377600.28996214 9085547.16258457,2376452.50808842 9085383.80323754,2376772.47370081 9086351.87675873,2377839.0034782 9086934.37453989,2379594.6899592 9089526.88193449,2380136.17022631 9089494.07408576,2379758.77488863 9090478.570831,2380341.26525615 9089937.0906658,2380251.02967691 9090511.38319048,2379397.79917583 9090659.06515612,2379307.55246464 9091061.06154116,2380316.65251674 9092365.52577592,2381383.19342608 9091717.39068873,2381227.31274312 9092652.66570207,2381670.34205258 9093128.5061353,2382991.20347059 9091815.82075834,2381965.6837936 9091020.04296678,2382195.4026948 9090019.11564374,2380972.99223445 9088796.72250146,2381941.08218614 9089764.79230159,2382720.17390635 9089461.95191981)))', 3857) AS geom
) SELECT ST_IsValid(sample.geom), ST_IsValid(ST_Transform(sample.geom, 4326)) FROM sample
Example
SELECT ST_Transform(ST_SetSRID('POINT(575 90)'::geometry,4269),102008);
ERROR: transform: latitude or longitude exceeded limits (-14)
Find geodetic data with invalid coordinates
SELECT * FROM data_tbl
WHERE abs(ST_XMax(geom)) > 180
OR abs(ST_YMax(geom) > 90;