【GeoDjango】如何正确配置geodjango开发环境

原文作者:我辈理想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。

系列文章目录

【GeoDjango框架解析】配置geodjango开发环境
【GeoDjango框架解析】GDAL、GEOS、PORJ等配置的报错处理



前言

Django是python的web框架,GeoDjango 是一个包含在 Django 中的 contrib 模块,它将 Django 变成一个世界级的地理网络框架。geodjango的基本使用和django区别不大,需要注意的是需要配置空间地理框架的相关环境,包括postgresql数据库、postgis空间扩展管理、gdal空间数据抽象库、geos几何引擎开源库、proj地图投影库、GeoIP基于IP的地理位置库。
GEOS是一个用于执行几何操作的C++库,是GeoDjango所使用的默认内部几何表示(它位于“懒”几何体的后面)。
PROJ 是用于将地理空间数据转换为不同坐标参考系统的库。
GDAL _是一个优秀的开源地理空间库,支持读取大多数矢量和栅格空间数据格式。

这里整理了查看版本的相关命令,安装环境前后用于确认版本信息。

  • postgresql版本:psql --version
  • postgis版本:进入psql数据库, =# SELECT PostGIS_full_version();
  • gdal版本:gdalinfo --version,gdal-config --version
  • geos版本: geos-config --version
  • proj版本:proj -v 或 pkg-config --modversion proj

一、安装postgresql数据库

(一)Linux系统

具体安装可参考我的另一篇博客:Ubuntu安装postgresql并连接navicat

(二)windows系统

参考链接:https://www.cnblogs.com/haolb123/p/16553099.html

二、安装postgis扩展

步骤一的链接上包含postgis的安装

三、安装gdal、geos、proj环境

(一)Linux系统

命令安装

sudo apt update && sudo apt upgrade -y
sudo apt-get install build-essential
# sudo apt-get install python3-dev python3-pip python3-setuptools
sudo apt install python-dev libpq-dev # 用于解决python库报错
sudo apt install libgeos-dev libgdal-dev  # geos
sudo apt install proj-bin python3-pyproj # proj
sudo apt install binutils libproj-dev gdal-bin # gdal
export LD_LIBRARY_PATH=/usr/local/lib

编译安装

1.安装geos

# xyz 是版本信息
wget https://download.osgeo.org/geos/geos-X.Y.Z.tar.bz2
tar xjf geos-X.Y.Z.tar.bz2

cd geos-X.Y.Z
./configure
make
sudo make install
cd ..

2.安装proj

sudo apt-get install proj-bin python3-pyproj

3.安装gdal

# xyz 是版本信息
wget https://download.osgeo.org/gdal/X.Y.Z/gdal-X.Y.Z.tar.gz
tar xzf gdal-X.Y.Z.tar.gz
cd gdal-X.Y.Z

./configure
make # Go get some coffee, this takes a while.
sudo make install
cd ..

(二)windows系统

可通过安装OSGeo4W,完成gdal、geos、proj的安装。

四、设置settings配置文件

1.INSTALLED_APPS参数

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.gis', # 新增部分

    'users',  # 用户
]

2.GEOS_LIBRARY_PATH参数

    GEOS_LIBRARY_PATH = '/usr/lib/x86_64-linux-gnu/libgeos_c.so'
    # windows
    GEOS_LIBRARY_PATH = r'C:\OSGeo4W\bin\geos_c.dll'

3.GDAL_LIBRARY_PATH参数

    GDAL_LIBRARY_PATH = '/usr/lib/libgdal.so'
    # windwos
    GDAL_LIBRARY_PATH = r'C:\OSGeo4W\bin\gdal305.dll'

4.Postgis数据库配置

一定要确保django默认数据库是postgis,注释sqlite3数据库。

    DATABASES = {
        'default': {
            'ENGINE': 'django.contrib.gis.db.backends.postgis',
            'NAME': 'postgis_db',
            'USER': 'postgis_test',
            'PASSWORD': '1234',
            'HOST': '127.0.0.1',
            'PORT': '5432',
        },
    }

五、安装psycopy2库

psycopy2是python用于链接postgresql数据库的库。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ psycopg2-binary psycopy2

报错参考:python 安装 psycopg2 报错问题处理


总结

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GeodjangoDjango 框架的一个扩展,它提供了与地理空间相关的功能和数据库模型。如果你想在 Django 项目中使用地理空间数据,例如点、线、多边形等,可以考虑使用 Geodjango。 下面是一些使用 Geodjango 的简单步骤: 1. 安装 Geodjango 扩展。可以通过 pip 命令安装,如下所示: ``` pip install geodjango ``` 2. 在 Django 项目的 settings.py 文件中添加以下内容: ``` INSTALLED_APPS = [ ... 'django.contrib.gis', ... ] DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', 'PORT': '5432', } } ``` 其中,`django.contrib.gis` 是必须的应用,`django.contrib.gis.db.backends.postgis` 是 PostgreSQL 数据库的后端,如果使用其他数据库,则需要相应更改。 3. 在 Django 项目中定义地理空间模型。可以在 models.py 文件中定义模型类,例如: ``` from django.contrib.gis.db import models class PointOfInterest(models.Model): name = models.CharField(max_length=255) location = models.PointField() ``` 其中,`location` 是一个 PointField 类型的字段,用于存储地理位置信息。 4. 在 Django 项目中进行地理空间查询。可以使用 Django ORM 提供的查询 API,例如: ``` from django.contrib.gis.geos import Point from myapp.models import PointOfInterest p1 = Point(-122.4194, 37.7749) # 创建一个 Point 对象 pois = PointOfInterest.objects.filter(location__distance_lte=(p1, 10000)) # 查询距离 p1 不超过 10000 米的 PointOfInterest 对象 ``` 以上是使用 Geodjango 的简单步骤,还有更多高级用法和 API 可以参考官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我辈李想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值