关于GeoDjango和地图服务的疑问
我正在尝试用GeoDjango构建我的第一个GIS应用程序,在开始之前我有几个问题:
首先:GeoDjango到底是用来做什么的,跟谷歌地图有什么关系?它是不是只是用来处理信息,然后把这些信息传给像谷歌地图这样的服务?
如果是这样的话,使用GeoDjango有什么好处呢?难道仅仅把经纬度存到数据库里,然后传给谷歌地图就不行吗?
假设以上都是真的,如果我突然想换地图提供商(比如从谷歌换到必应),GeoDjango会让这个过程变得更简单、更灵活吗?
我有点搞不清GeoDjango和地图服务之间的关系,如果有人能给我举些例子来解释一下,那就太好了。
接下来:如果我有一个已经在GeoDjango中使用MySQL的项目,我应该把所有东西都迁移到PostgreSQL吗?因为GeoDjango和MySQL的兼容性不好。我在数据库方面应该怎么做呢?
1 个回答
10
在文档中提到:
GeoDjango是Django的一个扩展,可以把它变成一个一流的地理网络框架。GeoDjango的目标是让创建地理网络应用变得尽可能简单,比如基于位置的服务。它的一些功能包括:
- 支持OGC几何图形的Django模型字段。
- 对Django的ORM进行扩展,以便查询和处理空间数据。
- 提供松耦合的高层Python接口,用于GIS几何操作和数据格式。
- 在管理后台编辑几何字段。
你可以通过Google Maps Javascript API轻松将GeoDjango的信息处理到Google地图上。GeoDjango的优势在于它提供了处理几何类型信息的特殊工具。例如,这些字段:
- GeometryField(几何字段)
- PointField(点字段)
- LineStringField(线字符串字段)
- PolygonField(多边形字段)
- MultiPointField(多点字段)
- MultiLineStringField(多线字符串字段)
- MultiPolygonField(多边形集合字段)
- GeometryCollectionField(几何集合字段)
- GEOS
- PROJ.4
- GDAL
- GeoIP
- PostGIS
- SpatiaLite
如果你希望将来能够更换地图提供商,建议使用前端(地图)-后端(GeoDjango)的架构。这样你可以轻松更换前端或在不同的地图之间切换。
我还建议迁移到Postgres,因为它有各种工具,比如GEOS、PROJ.4、PostGIS库,这些对于处理空间数据非常有用。而MySQL的功能有限,文档中也提到过。