Skip to content Skip to sidebar Skip to footer

Distance From A Point To The Nearest Edge Of A Polygon

in the below code i want to calculate the distance from a point to the nearest edge of a polygon.as shown in the results section below, the coordinates are provided.the code posted

Solution 1:

  • your code works. It's approx 7000km from Belgium to Ethiopia
  • are you sure your data is correct? Have built a plotly graph to show where buffered polygon, polygon centroid and point are located in EPSG:4326 CRS
from shapely import wkt
import geopandas as gpd
import plotly.express as px
import json

# queryPostgreSQLForDistancesFromPointsToPolygon:4.32797817574802#result from postgis using st_distance operator
centerPointointAsTextInWKTInEPSG4326 = "POINT(6.7419520458647835 51.08427961641239)"
centerPointointAsTextInWKTInEPSG25832 = "POINT(341849.5 5661622.5)"
centerPointointAsTextInWKTInEPSG4326 = "POINT(6.7419520458647835 51.08427961641239)"
fieldCoordinatesAsTextInWKTInEPSG25832 = "POLYGON ((5622486.93624152 1003060.89945681,5622079.52632924 1003170.95198635,5622126.00418918 1003781.73122161,5622444.73987453 1003694.55868486,5622486.93624152 1003060.89945681))"
fieldCoordinatesAsTextInWKTInEPSG4326 = "POLYGON((6.741879696309871 51.08423775429969,6.742907378503366 51.08158745820981,6.746964018740842 51.08233499299334,6.746152690693346 51.08440763989611,6.741879696309871 51.08423775429969))"
# poly.distance(pt):3.8954865274727614e-05#result from geopandas

poly = wkt.loads(fieldCoordinatesAsTextInWKTInEPSG25832)
pt = wkt.loads(centerPointointAsTextInWKTInEPSG25832)

print(poly.distance(pt)/10**3)

# let's visualize it....
gpoly = (
    gpd.GeoDataFrame(geometry=[poly], crs="EPSG:25832")
    .buffer(10 ** 6)
    .to_crs("EPSG:4326")
)
gpoly.plot()
gpt = gpd.GeoDataFrame(geometry=[pt, poly.centroid], crs="EPSG:25832").to_crs(
    "EPSG:4326"
)
px.scatter_mapbox(
    gpt.assign(dist=poly.distance(pt)/10**3),
    lat=gpt.geometry.y,
    lon=gpt.geometry.x,
    hover_data={"dist":":.0f"},
).update_layout(
    mapbox={
        "style": "carto-positron",
        "zoom": 4,
        "layers": [
            {
                "source": json.loads(gpoly.to_json()),
                "below": "traces",
                "type": "fill",
                "color": "red",
            }
        ],
    }
)

enter image description here


Post a Comment for "Distance From A Point To The Nearest Edge Of A Polygon"