在 PostGIS 中查找 return 个 path/route 通过的多边形

Find and return polygons which path/route goes through in PostGIS

您好,我面临着寻找多边形的挑战,其中一条路径 return 编辑为多线串,穿过或穿过。因此,如果我必须从 A 旅行到 B,那么我必须计算并 return 我访问的所有多边形,包括多边形 A 和 B 都包含在其中。这在 PostGIS 中如何实现?

所以我有一张看起来像这样的地图和路线:MAP with approx route

我得到的多线串 returned 可以在这里看到

{ "type": "MultiLineString", "coordinates": [ [ [9.3555111, 57.1437626], [9.354822, 57.1438372], [9.3535543, 57.1440033] ], [ [9.3561095, 57.1437043], [9.3555111, 57.1437626] ], [ [9.3572876, 57.1435895], [9.3561095, 57.1437043] ], [ [9.3574905, 57.1435697], [9.3572876, 57.1435895] ], [ [9.3578022, 57.1435618], [9.3574905, 57.1435697] ], [ [9.3579576, 57.1435655], [9.3578022, 57.1435618] ], [ [9.3571448, 57.1462326], [9.3571254, 57.1461296], [9.3571139, 57.1459493], [9.3571267, 57.1457911], [9.3571777, 57.1455926], [9.3572617, 57.1453846], [9.3576578, 57.1445901], [9.3578012, 57.1442991], [9.3579052, 57.1439939], [9.3579244, 57.1439216], [9.3579576, 57.1435655] ], [ [9.3572195, 57.1462287], [9.3571448, 57.1462326] ], [ [9.3572195, 57.1462287], [9.3572649, 57.146383], [9.357327, 57.1465307], [9.3574453, 57.1467449], [9.3575921, 57.1469549], [9.3577695, 57.1471422], [9.3579757, 57.1473145], [9.3584842, 57.1476965], [9.3593117, 57.1483147] ], [ [9.3593117, 57.1483147], [9.3594894, 57.1482729], [9.3597109, 57.1482499], [9.3599176, 57.148252], [9.3600273, 57.148263] ], [ [9.3600273, 57.148263], [9.3602192, 57.1482932], [9.3608886, 57.1484771] ], [ [9.3608886, 57.1484771], [9.3614141, 57.1485938], [9.3619974, 57.1486991], [9.3626358, 57.1487903], [9.3631325, 57.1488405], [9.3636579, 57.1488672], [9.3647925, 57.1488727], [9.366019, 57.1488006], [9.366409, 57.1487376] ], [ [9.366409, 57.1487376], [9.3669798, 57.1486454], [9.3679406, 57.148418], [9.3681876, 57.1483527] ], [ [9.3681876, 57.1483527], [9.3683101, 57.1483157] ], [ [9.3683101, 57.1483157], [9.3724174, 57.1470762], [9.3774741, 57.1455547] ], [ [9.3774741, 57.1455547], [9.3811383, 57.1444522], [9.3858889, 57.1430227], [9.3893335, 57.1419691], [9.3926962, 57.1409709], [9.3942157, 57.1405259] ], [ [9.3942157, 57.1405259], [9.3943623, 57.1404829], [9.394568, 57.1404381] ], [ [9.394568, 57.1404381], [9.3958137, 57.1401667], [9.3975206, 57.1398451], [9.3989005, 57.1396787], [9.4002496, 57.1395567], [9.4014251, 57.1395012], [9.4056873, 57.139296], [9.4100677, 57.1390735] ], [ [9.4100677, 57.1390735], [9.4107366, 57.1390742], [9.4121471, 57.1390797], [9.4130772, 57.1391241], [9.4139562, 57.1391796], [9.4151828, 57.1392905], [9.4177483, 57.1396621], [9.4222353, 57.1403331], [9.4230122, 57.1404551], [9.4239014, 57.1405716], [9.4268349, 57.14086], [9.4287227, 57.1410362] ], [ [9.4287227, 57.1410362], [9.4295318, 57.1411117] ], [ [9.4295318, 57.1411117], [9.4312913, 57.1412759], [9.4334173, 57.1414589], [9.4357477, 57.1417695], [9.4410116, 57.1424737], [9.444589, 57.1429507], [9.4468172, 57.1432335], [9.4487797, 57.1435052], [9.4499035, 57.1436858], [9.4511325, 57.1440427], [9.4521711, 57.1444277], [9.4532933, 57.1449746], [9.4536954, 57.1452012] ], [ [9.4536954, 57.1452012], [9.4539329, 57.1450673], [9.4541521, 57.1450064] ], [ [9.4541521, 57.1450064], [9.4571546, 57.1432029] ], [ [9.4571546, 57.1432029], [9.4575749, 57.1429363] ], [ [9.4632247, 57.1440417], [9.4575749, 57.1429363] ], [ [9.4677832, 57.1449625], [9.4632247, 57.1440417] ], [ [9.4702609, 57.1449583], [9.468828, 57.1449876], [9.4682462, 57.1449956], [9.4677832, 57.1449625] ], [ [9.4730542, 57.1449118], [9.4702609, 57.1449583] ], [ [9.4736102, 57.1448992], [9.4730542, 57.1449118] ], [ [9.476478, 57.1448101], [9.4758299, 57.1448487], [9.4736102, 57.1448992] ], [ [9.4776624, 57.1447481], [9.4770398, 57.1447683], [9.476478, 57.1448101] ], [ [9.4797556, 57.1450294], [9.4784706, 57.1449687], [9.4781911, 57.1449135], [9.4779318, 57.1448253], [9.4776624, 57.1447481] ], [ [9.482506, 57.1453423], [9.4806997, 57.1451109], [9.4797556, 57.1450294] ], [ [9.4856798, 57.1453847], [9.4833677, 57.1453751], [9.482506, 57.1453423] ], [ [9.4878125, 57.145319], [9.4863807, 57.1453842], [9.4856798, 57.1453847] ], [ [9.4886688, 57.1452634], [9.4878125, 57.145319] ], [ [9.4896027, 57.1452074], [9.4886688, 57.1452634] ], [ [9.4900872, 57.1451784], [9.4896027, 57.1452074] ], [ [9.4915526, 57.1450695], [9.4900872, 57.1451784] ], [ [9.5033371, 57.144857], [9.4925869, 57.1449936], [9.4915526, 57.1450695] ], [ [9.5062344, 57.1466448], [9.5056962, 57.1464416], [9.5051967, 57.14621], [9.5033371, 57.144857] ], [ [9.5153133, 57.1490422], [9.5152178, 57.1489798], [9.5150239, 57.1488945], [9.5143783, 57.1486929], [9.5120804, 57.1480541], [9.5080348, 57.1470259], [9.5070276, 57.1468355], [9.5062344, 57.1466448] ], [ [9.516164, 57.151073], [9.5161224, 57.1510048], [9.516166, 57.1507837], [9.5161656, 57.1506361], [9.5161163, 57.1504358], [9.5156098, 57.1493643], [9.515405, 57.1491178], [9.5153133, 57.1490422] ], [ [9.517273, 57.1512057], [9.5164759, 57.1511709], [9.5162961, 57.1511398], [9.516164, 57.151073] ], [ [9.5254761, 57.1521458], [9.5251101, 57.1520388], [9.5247146, 57.1519563], [9.5235082, 57.1517346], [9.5230687, 57.1516258], [9.5221932, 57.1512634], [9.5219455, 57.1511788], [9.5216993, 57.1511442], [9.5214123, 57.1511386], [9.5189081, 57.1512418], [9.5182031, 57.1512418], [9.517273, 57.1512057] ], [ [9.526051, 57.152711], [9.5259224, 57.1526441], [9.5258034, 57.1525262], [9.525622, 57.1522691], [9.5254761, 57.1521458] ], [ [9.5302396, 57.1529888], [9.5265538, 57.1528129], [9.5263203, 57.1527829], [9.526051, 57.152711] ], [ [9.5336269, 57.1533783], [9.5332398, 57.1532048], [9.5330259, 57.1531359], [9.5328073, 57.1531114], [9.5302396, 57.1529888] ], [ [9.5387981, 57.1554757], [9.5384128, 57.155428], [9.5380023, 57.1553493], [9.5376739, 57.1552415], [9.5373527, 57.1550966], [9.537085, 57.1549439], [9.5368319, 57.1548143], [9.5336269, 57.1533783] ], [ [9.5414655, 57.1558512], [9.5413173, 57.1557635], [9.5411112, 57.1556573], [9.540898, 57.1556003], [9.5405117, 57.155565], [9.5387981, 57.1554757] ], [ [9.5416406, 57.1571697], [9.5414383, 57.1559276], [9.5414655, 57.1558512] ], [ [9.541798, 57.1581042], [9.5416406, 57.1571697] ], [ [9.5421883, 57.1604317], [9.541798, 57.1581042] ], [ [9.5422647, 57.160858], [9.5421883, 57.1604317] ], [ [9.5429259, 57.1646325], [9.5422647, 57.160858] ], [ [9.5577988, 57.1658202], [9.5482666, 57.1650468], [9.5431324, 57.1646357], [9.5429259, 57.1646325] ], [ [9.5654501, 57.1664078], [9.5642455, 57.1663137], [9.5577988, 57.1658202] ], [ [9.567757, 57.1665879], [9.5654501, 57.1664078] ], [ [9.5709973, 57.1668223], [9.5708411, 57.1668176], [9.567757, 57.1665879] ], [ [9.5709973, 57.1668223], [9.5712722, 57.1668408], [9.575661, 57.1671735], [9.5757638, 57.1671973] ], [ [9.5877421, 57.1689964], [9.5857565, 57.1685859], [9.5817132, 57.1676194], [9.5813375, 57.1675939], [9.5788932, 57.1674225], [9.5766478, 57.1672516], [9.5757638, 57.1671973] ], [ [9.586522, 57.1701951], [9.5877421, 57.1689964] ], [ [9.5933471, 57.1712614], [9.5929056, 57.171103], [9.5925623, 57.1710033], [9.5921332, 57.1710598], [9.5917225, 57.1711296], [9.5911586, 57.1711097], [9.5906988, 57.1710631], [9.586522, 57.1701951] ], [ [9.59778, 57.1755274], [9.5974602, 57.1752393], [9.5973578, 57.1750332], [9.5970679, 57.174671], [9.5969331, 57.1746112], [9.5966756, 57.1745481], [9.5962342, 57.1743653], [9.5960565, 57.1742523], [9.5956764, 57.1741393], [9.5953331, 57.1739233], [9.5951553, 57.1737505], [9.5951423, 57.173544], [9.5950793, 57.1733709], [9.5949001, 57.1732655], [9.5950039, 57.1731825], [9.5949776, 57.1730893], [9.5948795, 57.1729563], [9.5946833, 57.1728732], [9.5940625, 57.1728038], [9.5936719, 57.1727337], [9.5934466, 57.1726295], [9.5933211, 57.1725441], [9.5931893, 57.1724999], [9.5929699, 57.1724455], [9.5929249, 57.1723807], [9.5929664, 57.1722459], [9.5929023, 57.172217], [9.5927704, 57.1721109], [9.5926788, 57.1719604], [9.5929145, 57.1717318], [9.5929827, 57.1715872], [9.5930979, 57.1714821], [9.5931311, 57.1714206], [9.5932017, 57.1713511], [9.5933471, 57.1712614] ], [ [9.6047945, 57.1747181], [9.6045993, 57.1746559], [9.6044316, 57.1746341], [9.6037672, 57.1746425], [9.6035456, 57.1746646], [9.6024995, 57.1749798], [9.6021384, 57.175039], [9.6003157, 57.1752783], [9.6000176, 57.175294], [9.5990388, 57.1754059], [9.59873, 57.1754157], [9.59778, 57.1755274] ], [ [9.6127373, 57.1772197], [9.6098243, 57.1763209], [9.6062355, 57.1751704], [9.6059362, 57.1750485], [9.6047945, 57.1747181] ], [ [9.6136709, 57.1775394], [9.6127373, 57.1772197] ], [ [9.6137431, 57.1775623], [9.6136709, 57.1775394] ], [ [9.6226472, 57.1800812], [9.6191266, 57.1792676], [9.6137431, 57.1775623] ], [ [9.6247259, 57.1805615], [9.6226472, 57.1800812] ], [ [9.626882, 57.1810791], [9.6247259, 57.1805615] ], [ [9.6287287, 57.1818221], [9.6287134, 57.1817708], [9.6286223, 57.1816803], [9.6280713, 57.1814399], [9.626882, 57.1810791] ], [ [9.6287287, 57.1818221], [9.6288488, 57.1818093], [9.6289428, 57.1818202], [9.6290759, 57.1818612], [9.6293552, 57.1819947], [9.629604, 57.1821842], [9.6296353, 57.1822356], [9.6296214, 57.1823002] ], [ [9.6303236, 57.1825125], [9.6296214, 57.1823002] ], [ [9.6307599, 57.1826438], [9.6303236, 57.1825125] ], [ [9.6324711, 57.183159], [9.6307599, 57.1826438] ], [ [9.6354295, 57.1840354], [9.6350074, 57.1839225], [9.6324711, 57.183159] ], [ [9.6362413, 57.184182], [9.6358706, 57.1841322], [9.6354295, 57.1840354] ], [ [9.6367365, 57.1842275], [9.6364984, 57.1842114], [9.6362413, 57.184182] ], [ [9.6378766, 57.1842574], [9.6367365, 57.1842275] ], [ [9.6390149, 57.1842935], [9.6378766, 57.1842574] ], [ [9.6451831, 57.1850131], [9.6444469, 57.1847934], [9.643728, 57.1846266], [9.6428365, 57.1844879], [9.6419594, 57.1844018], [9.6409752, 57.1843545], [9.6390149, 57.1842935] ], [ [9.6465635, 57.1855788], [9.6459567, 57.1853061], [9.6451831, 57.1850131] ], [ [9.6522672, 57.1882655], [9.6465635, 57.1855788] ], [ [9.6544744, 57.1893016], [9.6540537, 57.1891092], [9.6522672, 57.1882655] ], [ [9.6562787, 57.1900128], [9.6558348, 57.1898745], [9.6552766, 57.189656], [9.6544744, 57.1893016] ], [ [9.6567186, 57.1901368], [9.6562787, 57.1900128] ], [ [9.6575416, 57.1903173], [9.6571738, 57.1902454], [9.6567186, 57.1901368] ], [ [9.6627065, 57.190584], [9.660466, 57.1905533], [9.6596238, 57.1905408], [9.6587971, 57.1904843], [9.6582137, 57.1904215], [9.6575416, 57.1903173] ], [ [9.6642627, 57.190681], [9.663499, 57.1906151], [9.6627065, 57.190584] ], [ [9.6683386, 57.1914239], [9.6652064, 57.1908326], [9.6642627, 57.190681] ], [ [9.6692696, 57.1916115], [9.6683386, 57.1914239] ], [ [9.6722869, 57.1919033], [9.6717856, 57.1918944], [9.671251, 57.1918641], [9.6707397, 57.1918245], [9.6701725, 57.1917563], [9.6697747, 57.1916999], [9.6692696, 57.1916115] ], [ [9.6721281, 57.1924274], [9.6722869, 57.1919033] ], [ [9.6719929, 57.1929592], [9.6721281, 57.1924274] ], [ [9.6719054, 57.1933035], [9.6719929, 57.1929592] ], [ [9.6718815, 57.1934584], [9.6718858, 57.1933804], [9.6719054, 57.1933035] ], [ [9.6719676, 57.1941722], [9.6718748, 57.1935809], [9.6718815, 57.1934584] ], [ [9.6720584, 57.1948215], [9.6719676, 57.1941722] ], [ [9.6720879, 57.1950329], [9.6720584, 57.1948215] ], [ [9.672901, 57.1950078], [9.6720879, 57.1950329] ], [ [9.672901, 57.1950078], [9.6729386, 57.195217] ], [ [9.6729386, 57.195217], [9.6729586, 57.1953285] ], [ [9.6729601, 57.195406], [9.6729586, 57.1953285] ], [ [9.6730101, 57.1961026], [9.6729816, 57.1955673], [9.6729601, 57.195406] ], [ [9.6731242, 57.1960885], [9.6730101, 57.1961026] ], [ [9.6732539, 57.1973861], [9.6732154, 57.1973583], [9.6731685, 57.1962711], [9.6731242, 57.1960885] ], [ [9.6738644, 57.1973537], [9.6732923, 57.1974023], [9.6732539, 57.1973861] ] ] }

在我的地图中 table 我只有多边形的几何数据。所以我在想,如果 geom->polygon 中包含一组 og 坐标,应该可以检查它,但是怎么做呢?似乎无法弄清楚如何使用 ST 函数以及具体使用哪一个。

只需使用 st_intersects:您正在寻找与您的路线(多)线串相交的多边形。

您的查询将是这样的

select polygons.id from polygons
where st_intersects(polygons.geometry, ST_GeomFromGeoJSON('GEOJSON HERE'))