标签: geodjango

我应该使用GeoDjango来制定平面图吗?

我想创建一个具有可点击区域的室内空间的平面图.我的第一个想法是调查GeoDjango,因为它 Django 地图应用程序.但考虑到依赖性,学习曲线和整体复杂性,我担心我可能会试图用火箭筒拍打苍蝇.

我应该使用GeoDjango,还是应该在数据库字段中存储整数列表?

编辑:平面图很简单; 一系列墙壁和工作站,能够定义工作站占用空间的区域,从而允许定义办公室以及开放式布局.

python mapping django geodjango

6
推荐指数
2
解决办法
2775
查看次数

使用GeoDjango在postGIS上需要性能

这是我第一次将GeoDjango与postGIS一起使用.在安装和一些运行正常的测试之后,当表行增长时,我担心查询性能.

我节省了从Google地理编码(WGS84或SRID 4326)获得的几何点经度和纬度.我的问题是距离操作在我的应用程序中很常见.我经常需要从地标附近找到景点.几何数学是非常复杂的,所以即使我有空间索引,将来可能需要太长时间才能在附近区域有超过1000个点.

那么有没有办法投影这种几何类型来更快地进行距离操作?有没有人知道Django库可以渲染包含其中一些点的谷歌地图?

有关如何加速GeoDjango空间查询的任何建议?

python django postgis geodjango

6
推荐指数
1
解决办法
3085
查看次数

Django的Google Maps位置和区域字段

我正在寻找两个易于在管理中使用的Django模型字段,并提供谷歌地图交互界面.

LocationField

存储经度和纬度,管理员用户点击地图以标记位置.

AreaField

存储逗号分隔的位置字符串,管理员用户在地图上创建形状以标记区域.

我找到了其中一些,但你会推荐哪一个满足上述要求?

当然还有geodjango,但这个项目似乎有点矫枉过正.

django google-maps geodjango

6
推荐指数
2
解决办法
1万
查看次数

在PostGIS中,大于世界一半的多边形被视为相反

我正在使用GeoDjango和PostGIS,并尝试使用多边形从数据库中获取记录.

如果我定义一个大于地球面积一半的多边形,则假定我的多边形的"内部"是我打算作为"外部"的较小区域,并仅返回其外部的结果.

我可以使用这个较小的错误区域来排除结果.Polygon.area似乎知道我打算做什么,所以我可以用它来确定何时使我的搜索包含或排除.我觉得这个问题可能很常见,有没有更好的解决方法?

更新:如果180度经度在我的多边形内部,则根本不起作用.看来GEOS这次应该受到指责.这张图片显示了我认为的原因.绿色是我定义的多边形,红色是它似乎解释它的方式.地球上的多边形同样,这似乎是一个经常出现的问题,而且像GEOS这样的图书馆需要处理这个问题.有办法吗?

postgis geodjango geos

6
推荐指数
1
解决办法
660
查看次数

将GeoDjango集成到现有的Django项目中

我有一个包含多个应用程序的Django项目.他们都共享一个数据库engine = django.db.backends.postgresql_psycopg2.现在我想要一些功能,GeoDjango并决定将它集成到我现有的项目中.我仔细阅读了教程,看起来我必须为GeoDjango创建一个单独的spartial数据库.我想知道是否还有.我尝试将其添加到我的应用程序的models.py中,而不更改我的数据库设置:

from django.contrib.gis.db.models import PointField

class Location(models.Model):
        location = PointField()
Run Code Online (Sandbox Code Playgroud)

但是当我运行syncdb时,我收到了这个错误.

File "/home/virtual/virtual-env/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 200, in db_type
    return connection.ops.geo_db_type(self)
Run Code Online (Sandbox Code Playgroud)

database django geodjango

6
推荐指数
1
解决办法
1398
查看次数

如何使用geodjango返回距离点最近距离的记录?

我正在使用geodjango并在我的数据库中有一个点集合.要获取某个区域内的点的查询集,我使用:

queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
Run Code Online (Sandbox Code Playgroud)

我的问题是我怎样才能从我通过的点返回一个点(距离最短的点)?

编辑

我应该提一下,我正在传递坐标并希望Point用它们创建一个对象.然后将该点作为原点传递并对其进行过滤.例如,我尝试过:

from spots.models import *
from django.contrib.gis.geos import *

origin = Point(28.011030, -26.029430)
distance_m = 1000

queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
for q in queryset:
    print q.distance
Run Code Online (Sandbox Code Playgroud)

这段代码给了我这个错误:

Traceback (most recent call last):
  File "<console>", line 2, in <module>
AttributeError: 'Spot' object has no attribute 'distance'
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我执行以下操作:

origin = Spot.objects.get(name='Montecasino').point
distance_m = 1000

for city in Spot.objects.distance(origin):
    print(city.name, city.distance)

(u'Design Quarter Parking', Distance(m=677.347841801))
(u'Montecasino', Distance(m=0.0))
(u'Fourways', Distance(m=1080.67723755))
Run Code Online (Sandbox Code Playgroud)

django geodjango

6
推荐指数
1
解决办法
4232
查看次数

使用gis.db未定义DJANGO_SETTINGS_MODULE

我用的时候

from django.contrib.gis.db import models
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    from django.contrib.gis.db import models
  File "C:\Python27\lib\site-packages\django\contrib\gis\db\models\__init__.py"
, line     2, in <module>
    from django.db.models import *
 File "C:\Python27\lib\site-packages\django\db\__init__.py", line 11, in <module>
   if DEFAULT_DB_ALIAS not in settings.DATABASES: 
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 184,
 in inner
   self._setup()
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 40,
 in _setup
     raise ImportError("Settings cannot be imported, because environment 
variable %s 
is    undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable   
DJANGO_SETTINGS_MODULE is undefined. …
Run Code Online (Sandbox Code Playgroud)

python geodjango

6
推荐指数
1
解决办法
229
查看次数

'module'对象没有属性'GeoSQLCompiler'

我是geodjango的新手.我正在使用django-1.4.5和我的数据库设置,

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2", # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
        "NAME": "mydb",                       # Or path to database file if using sqlite3.
        "USER": "postgres",                             # Not used with sqlite3.
        "PASSWORD": "test",                         # Not used with sqlite3.
        "HOST": "localhost",                             # Set to empty string for localhost. Not used with sqlite3.
        "PORT": "",                             # Set to empty string for default. Not used with sqlite3.
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了错误'module' object has no attribute 'GeoSQLCompiler' 请解决我的问题.

python django geodjango

6
推荐指数
1
解决办法
1328
查看次数

错误:请安装PostgreSQL服务器开发包并重新运行configure

我正在尝试在我的ubuntu系统上为django框架安装Postgis.但每当我运行命令./configure它给我错误

 error: the PGXS Makefile /usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk cannot be found. Please install the PostgreSQL server development packages and re-run configure.
Run Code Online (Sandbox Code Playgroud)

我已经在我的系统上安装了postgres,并且还创建了用户.但我无法在我的系统上安装Postgis.我已经完成了我在互联网上找到的许多说明但未能安装它.

请告诉我这个错误的解决方案,以便我可以在ubuntu上安装Postgis.帮助将受到高度赞赏

django postgresql ubuntu postgis geodjango

6
推荐指数
1
解决办法
6659
查看次数

为我的REST API创建一个单独的应用程序或将其放在我的工作应用程序中?

我正在geodjango上构建简单的gis系统.

该应用程序显示一组地图,我也试图为这些地图提供RESTFUL API.

我正在决定是为API创建单独的应用程序还是在现有应用程序内部工作.
这两个应用程序在逻辑上是分开的,但它们共享相同的模型.

那么什么被认为更好?

django geodjango restful-architecture django-rest-framework

6
推荐指数
1
解决办法
1086
查看次数