我想创建一个具有可点击区域的室内空间的平面图.我的第一个想法是调查GeoDjango,因为它是 Django 的地图应用程序.但考虑到依赖性,学习曲线和整体复杂性,我担心我可能会试图用火箭筒拍打苍蝇.
我应该使用GeoDjango,还是应该在数据库字段中存储整数列表?
编辑:平面图很简单; 一系列墙壁和工作站,能够定义工作站占用空间的区域,从而允许定义办公室以及开放式布局.
这是我第一次将GeoDjango与postGIS一起使用.在安装和一些运行正常的测试之后,当表行增长时,我担心查询性能.
我节省了从Google地理编码(WGS84或SRID 4326)获得的几何点经度和纬度.我的问题是距离操作在我的应用程序中很常见.我经常需要从地标附近找到景点.几何数学是非常复杂的,所以即使我有空间索引,将来可能需要太长时间才能在附近区域有超过1000个点.
那么有没有办法投影这种几何类型来更快地进行距离操作?有没有人知道Django库可以渲染包含其中一些点的谷歌地图?
有关如何加速GeoDjango空间查询的任何建议?
我正在寻找两个易于在管理中使用的Django模型字段,并提供谷歌地图交互界面.
LocationField
存储经度和纬度,管理员用户点击地图以标记位置.
AreaField
存储逗号分隔的位置字符串,管理员用户在地图上创建形状以标记区域.
我找到了其中一些,但你会推荐哪一个满足上述要求?
当然还有geodjango,但这个项目似乎有点矫枉过正.
我正在使用GeoDjango和PostGIS,并尝试使用多边形从数据库中获取记录.
如果我定义一个大于地球面积一半的多边形,则假定我的多边形的"内部"是我打算作为"外部"的较小区域,并仅返回其外部的结果.
我可以使用这个较小的错误区域来排除结果.Polygon.area似乎知道我打算做什么,所以我可以用它来确定何时使我的搜索包含或排除.我觉得这个问题可能很常见,有没有更好的解决方法?
更新:如果180度经度在我的多边形内部,则根本不起作用.看来GEOS这次应该受到指责.这张图片显示了我认为的原因.绿色是我定义的多边形,红色是它似乎解释它的方式.
同样,这似乎是一个经常出现的问题,而且像GEOS这样的图书馆需要处理这个问题.有办法吗?
我有一个包含多个应用程序的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) 我正在使用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) 我用的时候
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) 我是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'
请解决我的问题.
我正在尝试在我的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.帮助将受到高度赞赏
我正在geodjango上构建简单的gis系统.
该应用程序显示一组地图,我也试图为这些地图提供RESTFUL API.
我正在决定是为API创建单独的应用程序还是在现有应用程序内部工作.
这两个应用程序在逻辑上是分开的,但它们共享相同的模型.
那么什么被认为更好?
geodjango ×10
django ×8
python ×4
postgis ×3
database ×1
geos ×1
google-maps ×1
mapping ×1
postgresql ×1
ubuntu ×1