Nearest neighbor

Using a buffer, you can get all the incidents within a specified radius of the point of interest. But what if you only want the 5, 10, or 15 closest incidents? To do that, you can use the <-> operator or k-nearest neighbor.

You can use the following code to select the 15 closest points to a specified point, p:

p = Point([-106.578677,35.062485])cursor.execute("SELECT ST_AsGeoJSON(incidents.geom), ST_Distance(incidents.geom::geography,ST_GeometryFromText('{}')::geography) from incidents ORDER BY incidents.geom<->ST_GeometryFromText('{}') LIMIT 15".format(p.wkt,p.wkt))c=cursor.fetchall()for x in c:    layer=json.loads(x[0])    layergeojson=GeoJSON(data=layer)    map.add_layer(layergeojson)

The previous code creates a point using Shapely, ...

Get Mastering Geospatial Analysis with Python now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.