在 Datasette 地图上绘制多边形
项目背景:在地图上绘制形状以查询 SpatiaLite 数据库。
在 Datasette 所在的环境中安装此插件。
$ datasette install datasette-leaflet-freedraw
如果一个表包含 SpatiaLite 的 geometry
列,此插件将为该表页面添加一个地图界面,允许用户在地图上绘制形状,以查找几何体与该形状相交的行。
此插件也可与任意 SQL 查询配合使用。在这种情况下,它会查找名称为 freedraw
或以 _freedraw
结尾的输入字段,并将其替换为地图界面。
地图界面使用了 FreeDraw Leaflet 插件。
您可以试用此插件来针对 GreenInfo Network California Protected Areas Database 进行搜索。这里有一个一个示例查询,显示旧金山的迷你公园。
select
AsGeoJSON(geometry), *
from
CPAD_2020a_SuperUnits
where
PARK_NAME like '%mini%' and
Intersects(GeomFromGeoJSON(:freedraw), geometry) = 1
and CPAD_2020a_SuperUnits.rowid in (
select
rowid
from
SpatialIndex
where
f_table_name = 'CPAD_2020a_SuperUnits'
and search_frame = GeomFromGeoJSON(:freedraw)
)
要在本地设置此插件,请首先检出代码。然后创建一个新的虚拟环境
cd datasette-leaflet-freedraw
python3 -mvenv venv
source venv/bin/activate
或者如果您正在使用 pipenv
pipenv shell
现在安装依赖项和测试
pip install -e '.[test]'
运行测试
pytest