标签: geodjango

GeoDjango GEOSException错误

试图在我的机器上安装GeoDjango.我是Python的新手,并被带入一个对其他团队成员来说非常棘手的安装项目.我使用brew安装了Python 2.7和GEOS,并运行了PSQL 9.2.4但是当我尝试运行webserver时仍然遇到此错误:

__import__(name)
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geometry/backend/geos.py", line 1, in <module>
from django.contrib.gis.geos import (
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/__init__.py", line 6, in <module>
from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/geometry.py", line 14, in <module>
from django.contrib.gis.geos.coordseq import GEOSCoordSeq
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site-
packages/django/contrib/gis/geos/coordseq.py", line 9, in <module>
from django.contrib.gis.geos.libgeos import CS_PTR
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site-
packages/django/contrib/gis/geos/libgeos.py", line 119, in <module>
_verinfo = geos_version_info()
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/libgeos.py", line 115, in geos_version_info
if not m: raise GEOSException('Could not parse version info string "%s"' % ver) …
Run Code Online (Sandbox Code Playgroud)

python django homebrew geodjango

62
推荐指数
5
解决办法
2万
查看次数

在执行syncdb时,获取"DatabaseOperations"对象没有属性"geo_db_type"错误

我正在尝试heroku run python manage.py syncdb在Heroku上运行我的GeoDjango应用程序,但是我收到以下错误:

AttributeError:'DatabaseOperations'对象没有属性'geo_db_type'

所有 我的 研究已经取得了相同的解决方案:确保使用django.contrib.gis.db.backends.postgis的数据库引擎.有趣的是,我已经这样做了(我也有django.contrib.gisINSTALLED_APPS):

settings.py

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

INSTALLED_APPS = (
    ...,
    'django.contrib.gis',
)
Run Code Online (Sandbox Code Playgroud)

还有其他我想念的东西吗?非常感谢任何帮助,下面是完整的错误跟踪供参考:

Running `python manage.py syncdb` attached to terminal... up, run.1
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table …
Run Code Online (Sandbox Code Playgroud)

django heroku geodjango

56
推荐指数
8
解决办法
3万
查看次数

在Django中使用哪个模型字段来存储经度和纬度值?

我希望使用经度和纬度来存储我的用户位置,目前这是来自谷歌地图,但我将使用GeoDango和一些点来计算点到点之间的距离.

然而,我的第一个困惑是我应该使用Django中的哪个字段来存储经度和纬度值?我得到的信息是冲突的.

官方文档使用FloatField https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#geographic-models

lon = models.FloatField()
lat = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

几乎所有关于stackoverflow的答案都显示了 DecimalField

long = models.DecimalField(max_digits=8, decimal_places=3)
lat = models.DecimalField(max_digits=8, decimal_places=3)
Run Code Online (Sandbox Code Playgroud)

那么我应该使用什么?

python django geodjango

56
推荐指数
3
解决办法
3万
查看次数

你怎么知道什么SRID用于一个shp文件?

我正在尝试将一个SHP文件放入我的PostGIS数据库中,数据有点偏差.我想这是因为我使用了错误的SRID.PRJ文件的内容如下:

GEOGCS["GCS_North_American_1983",
DATUM["D_North_American_1983",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]]
Run Code Online (Sandbox Code Playgroud)

SRID与此相关的是什么?更一般地说,如何根据PRJ文件中的信息查找SRID?在某个地方是否有一个列出所有SRID及其"geogcs"等价物的查找表?

作为参考,这里是使用导入的一些数据的图像srid=4269(我也尝试了4326并获得了完全相同的结果):

图片http://img245.imageshack.us/img245/2545/4326sand.png

黄色是我从SHP导入的数据,背景来自openlayers(来自geodjango admin).这是否意味着我使用了错误的SRID,或者这只是预期的误差范围?

shp文件来自这里

gis postgis geodjango srid

34
推荐指数
5
解决办法
4万
查看次数

Postgis/Geodjango:无法确定数据库的PostGIS版本

我正在尝试推出GeoDjango应用.我在Lion上使用brew安装了Postgres和PostGIS.我创建使用template_postgis数据库:createdb -T template_postgis test.

当我运行时python manage.py syncdb,我收到以下错误:

django.core.exceptions.ImproperlyConfigured:无法确定数据库"test"的PostGIS版本.GeoDjango至少需要PostGIS 1.3版.是否从空间数据库模板创建了数据库?

如何追踪错误来源?我已经检查过用户和传递配置是否可以访问数据库等.

django postgresql postgis geodjango

27
推荐指数
3
解决办法
1万
查看次数

保存geodjango PointField时出错

我有一个带有PointField属性的地理模型.一切都在本地完美,但当我尝试在服务器上保存实例时,我收到以下错误:

django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
Run Code Online (Sandbox Code Playgroud)

我挖掘了源代码,发现值的序列化方式不同; 具体而言,在服务器上执行查询之前,该值未被转义.它似乎正在进行转义psycopg2.Binary.getquoted(),当然,它不会在服务器上返回正确的值.

在我的机器上:

from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)

在服务器上:

from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)

好的,这解释了为什么它认为我试图插入一个空字节.(因为我.)所以现在我已经足够了解Jonathan S.在django-users组中找到类似的报告会出现什么问题但是,就像Jonathan一样,我不知道这是错误还是配置错误.

有人能指出我正确的方向吗?

以下是有关设置的一些信息:

          My computer      Server
OS        OSX 10.7         CentOS 5.5
Python    2.7              2.6
Django    1.3              1.3
Postgres  9.0.4            9.9.1
postgis   1.5.2            1.5.3-2.rhel5
geos      3.3.0            3.3.0-1.rhel5
Run Code Online (Sandbox Code Playgroud)

django postgresql postgis psycopg2 geodjango

22
推荐指数
1
解决办法
4143
查看次数

Django按距离排序

我有以下型号:

class Vacancy(models.Model):
    lat = models.FloatField('Latitude', blank=True)
    lng = models.FloatField('Longitude', blank=True)
Run Code Online (Sandbox Code Playgroud)

我应该如何进行查询以按距离排序(距离是无穷大)?
如果需要,可以使用PosgreSQL,GeoDjango.

谢谢.

python django geodjango

20
推荐指数
5
解决办法
1万
查看次数

如何合并2个Django QuerySets并制作一个SELECT DISTINCT

models.py
class SinglePoint(models.Model):
    attributes = models.TextField(blank=True)
    name = models.CharField(max_length=100)
    geom = models.PointField() #Kartenposition
    objects = models.GeoManager()

class Connection(models.Model):
    name = models.CharField(max_length=100)
    #points = models.ManyToManyField(SinglePoint) #OLD
    p1 = models.ForeignKey(SinglePoint, related_name='p1_set') #NEW
    p2 = models.ForeignKey(SinglePoint, related_name='p2_set') #NEW
    obs = models.ManyToManyField(Observation, blank=True)
    conds = models.ManyToManyField(Condition, blank=True)
    objects = models.GeoManager()

class Meta:
    order_with_respect_to = 'p1'
Run Code Online (Sandbox Code Playgroud)

在我的view.py中:

...
p1_points = SinglePoint.objects.filter(p1_set__vektordata__order__project__slug=slug)
p2_points = SinglePoint.objects.filter(p2_set__vektordata__order__project__slug=slug)
...
Run Code Online (Sandbox Code Playgroud)

在我切换到ForeignKey之前,它适用于:

points = SinglePoint.objects.filter(connection__vektordata__order__project__slug=slug)
Run Code Online (Sandbox Code Playgroud)

如何将这两个QuerySet"连接"到一个QuerySet并创建一个distinct()?

谢谢!

django distinct django-queryset geodjango

19
推荐指数
3
解决办法
2万
查看次数

更改LC_CTYPE以使用PostgreSQL和PostGIS

所以我正在浏览GeoDjango教程并且我坚持这个错误消息:

postgres@lucid32:~$ createdb -E UTF8 template_postgis
createdb: database creation failed: ERROR:  encoding UTF8 does not match locale en_US
DETAIL:  The chosen LC_CTYPE setting requires encoding LATIN1.
Run Code Online (Sandbox Code Playgroud)

我用Google搜索并阅读了一些Ubuntu文档,但无济于事.任何见解将不胜感激!

我正在使用默认的Vagrant Box清晰32,用于测试我的设置.

postgresql locale postgis geodjango

19
推荐指数
3
解决办法
2万
查看次数

geodjango使用mysql

我一直在使用django和mysql开发应用程序,我现在正在尝试从这里开始学习这个教程

http://docs.djangoproject.com/en/1.2/ref/contrib/gis/tutorial/

但是当我运行syncdb时出现以下错误,它失败了

AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
Run Code Online (Sandbox Code Playgroud)

当我阅读时,它说如果改变后端使用postGIS,这可以解决.有没有办法继续使用mysql作为我的后端,但能够使用geodjango?如果没有,是否可以在同一个项目中使用它们?

问候,

python django geodjango

17
推荐指数
2
解决办法
5596
查看次数