Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Calcola un punto su un poligono o un multipolygon, che è più vicino a un determinato punto sulla Terra.
Sintassi
geo_closest_point_on_polygon(
longitudine,
latitudine,
poligono)
Altre informazioni sulle convenzioni di sintassi .
Parametri
Nome | TIPO | Obbligatorio | Descrizione |
---|---|---|---|
longitudine | real |
✔️ | Coordinata geospaziale, valore di longitudine in gradi. Il valore valido è un numero reale e nell'intervallo [-180, +180]. |
latitudine | real |
✔️ | Coordinata geospaziale, valore di latitudine in gradi. Il valore valido è un numero reale e nell'intervallo [-90, +90]. |
poligono | dynamic |
✔️ | Poligono o multipolygon nel formato GeoJSON. |
Restituzioni
Punto nel formato GeoJSON e di un tipo di dati dinamici su un poligono o multipolygon, che è il più vicino a un determinato punto sulla Terra. Se il poligono contiene un punto di input, il risultato con è lo stesso punto. Se le coordinate o i poligoni non sono validi, la query produce un risultato Null.
Annotazioni
- Le coordinate geospaziali vengono interpretate come rappresentate dal sistema di riferimento di coordinate WGS-84 .
- Il datum geodetico usato per le misurazioni sulla Terra è una sfera. I bordi poligoni sono geodesici sulla sfera.
- Se i bordi del poligono di input sono linee cartesiane dritte, è consigliabile usare geo_polygon_densify() per convertire i bordi planari in geodesici.
- Per calcolare una distanza tra il punto più vicino di un poligono o multipolygone a un determinato punto, usare geo_distance_point_to_polygon()
Definizione e vincoli poligono
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1,..., LinearRingHole_N],..., [LinearRingShell, LinearRingHole_1,..., LinearRingHole_M]]})
- LinearRingShell è obbligatorio e definito come matrice
counterclockwise
ordinata di coordinate [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Può essere presente una sola shell. - LinearRingHole è facoltativo e definito come matrice
clockwise
ordinata di coordinate [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Ci può essere un numero qualsiasi di anelli interni e fori. - I vertici LinearRing devono essere distinti con almeno tre coordinate. La prima coordinata deve essere uguale all'ultima. Sono necessarie almeno quattro voci.
- Le coordinate [longitudine, latitudine] devono essere valide. La longitudine deve essere un numero reale nell'intervallo [-180, +180] e latitudine deve essere un numero reale nell'intervallo [-90, +90].
- LinearRingShell racchiude al massimo la metà della sfera. LinearRing divide la sfera in due aree. Verranno scelte le dimensioni più piccole delle due aree.
- La lunghezza del bordo LinearRing deve essere inferiore a 180 gradi. Verrà scelto il bordo più corto tra i due vertici.
- LinearRings non deve attraversare e non deve condividere i bordi. LinearRings può condividere vertici.
- Il poligono non contiene necessariamente i vertici.
Suggerimento
- L'uso di poligoni letterali può comportare prestazioni migliori.
Esempi
Nell'esempio seguente viene calcolata una posizione in Central Park che è la più vicina a un determinato punto.
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print geo_closest_point_on_polygon(-73.9839, 40.7705, central_park)
Output
print_0 |
---|
{"type": "Point","coordinates": [-73.981205580153926, 40.769359452843211] } |
Nell'esempio seguente viene restituito un risultato Null a causa dell'input di coordinate non valido.
print result = isnull(geo_closest_point_on_polygon(500,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,1],[0,0]]]})))
Output
risultato |
---|
vero |
Nell'esempio seguente viene restituito un risultato Null a causa dell'input poligono non valido.
print result = isnull(geo_closest_point_on_polygon(1,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))
Output
risultato |
---|
vero |