标签: geodjango

检索geodjango多面体对象的边界框

如何在geodjango中获取MultiPolygon对象的边界框?在API http://geodjango.org/docs/geos.html中找不到任何内容......

python gis django geodjango

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

基于django地址的谷歌地图位置

我正在 django 中开发一个 web 应用程序,我想构建一个功能,在这个功能中,一个人可以在文本框中输入一个位置名称,相应的位置显示在下一页谷歌地图的中心。

请让我知道可以在 Django 中完成此操作的详细方法

先感谢您!

django geodjango google-maps-api-3

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

想知道GeoDjango和制图服务

我正在尝试使用GeoDjango构建我的第一个GIS应用程序,在开始之前我有几个问题:

第一:GeoDjango与谷歌地图有什么关系?它只是处理信息,然后传递给谷歌地图等服务?

如果这是真的,那么使用GeoDjango与简单地在数据库中存储纬度/经度并将它们传递给谷歌地图有什么好处?

假设上述所有情况都属实,如果我突然想要改变地图提供者(从谷歌到Bing,我们可以说),GeoDjango是否更容易和更模块化?

我在理解GeoDjango和地图服务之间的关系时遇到了一些麻烦,如果有人可以通过一些例子为我澄清这一点,那就太棒了.

下一步:如果我在GeoDjango中有一个我希望集成的现有项目使用MySQL,我是否应该将所有内容移到PostgreSQL上,因为GeoDjango与MySQL不兼容?我应该怎么做数据库?

python database django google-maps geodjango

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

heroku PostGIS syncdb错误

我无法在heroku上运行一个简单的GeoDjango应用程序.我为我的数据库创建了postgis扩展,但是我无法在不收到以下错误的情况下运行syncdb:

from django.contrib.gis.geometry.backend import Geometry
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py", line 14, in <module>
'"%s".' % geom_backend)
django.core.exceptions.ImproperlyConfigured: Could not import user-defined GEOMETRY_BACKEND "geos".
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?也有人知道在heroku上运行一个简单的geodjango项目的教程吗?谢谢你的帮助

django postgis heroku geodjango geos

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

GeoDjango PointField 管理可视化

我想知道如何在 admin 中更改默认的 PointField 可视化(Openstreetmap),以便我可以输入简单的纬度/经度而不是在地图上选择一个点?

我看着这个点域的纬度/经度小部件?但无法在 Django 1.6b4 中以任何方式工作

谢谢

django-admin geodjango

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

GeoDjango 和 Postgis 中以米为单位的距离内位置的最佳查询

我在具有 GeoDjango 的默认 SRID、WGS84 的 Postgis 数据库中有几何图形,并且发现直接以度为单位的查找比以公里为单位要快得多,因为数据库可以跳过我认为的投影。

基本上,Place.objects.filter(location__distance__lte=(point, D(km=10)))Place.objects.filter(location__dwithin=(point, 10))第一个查询产生表的完整扫描慢几个数量级。但有时我需要查找以公里为单位的距离阈值的地方。

是否有某种精确的方法将 10 公里转换为查询的度数?也许我应该使用另一个具有相同性能的等效查找?

gis django postgis geolocation geodjango

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

Postgis不是可用的数据库后端

在工作的django 1.9应用程序中设置geodjango时我遇到了这个错误.

我的应用程序生活在亚马逊EC2实例和RDS postgres实例中.

错误是:

django.core.exceptions.ImproperlyConfigured: 'django.contrib.gis.db.backends.postgis' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3
Run Code Online (Sandbox Code Playgroud)

我做了什么:

  • 按照geodjango doc中的说明安装GEOS,PROJ.4和PostGIS .
  • 按照amazon doc中的说明在亚马逊RDS中安装PostGIS .
  • 修改我的项目settings.py以包括:

    • INSTALLED_APPS =(...'django.contrib.admin',...'django.contrib.gis')
    • GEOS_LIBRARY_PATH ='/ usr/local/lib/libgeos_c.so'
    • DATABASES = {...'ENGINE':'django.contrib.gis.db.backends.postgis'...}
  • 修改我的app models.py以从django.contrib.gis.db导入模型,而不是django.db

有什么猜测我错过了吗?

django postgresql geodjango

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

在 GeoDjango 上剥离 Z 维度(强制 2D 几何)

在我的项目中,我需要从shapefiles导入一些几何图形。

其中一些是MULTIPOLYGON Z类型,但所有 Z 坐标都是 0 值。

当我尝试保存几何图形时,出现错误:

“几何有 Z 维度,但列没有”

剥离 Z 维度的最佳方法是什么?

我的代码:

ds = DataSource(file_path, encoding='ISO-8859-1')
layers = ds[0]

#need something HERE to coerce geometry to 2D

obj=MyModel(geometry=GEOSGeometry(layers[0].geom.hex))
obj.save()
Run Code Online (Sandbox Code Playgroud)

gis django postgis geodjango geos

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

如何使用django-rest-framework-(gis)展平外键对象

我一直在寻找一个最新且特定于我的问题的解决方案,但是还没有找到解决方案或明确的文档来说明我真正需要做的事情,以便使关系变得平坦以符合geojson.

这个问题几乎与我的问题相同,但是解决方案或答案并没有解决问题,仍然会产生无效的GeoJSON.

有关

问题

我有一个Location模型,其中包含pointfieldSRID = 4326.我也有一个TrainStation有模型location字段作为外键Location.当我序列化TrainStation经由GeoFeatureModelSerializer其产生无效GeoJSON的(参见实施例下面的"无效GeoJSON的").

(当然,如果我PointFieldTrainStation模型存储在哪里,可以获得有效的GeoJSON ,但在我的情况下,我不能这样做,所以我需要以某种方式压扁它.)

  • 如何实现输出,如下面的"Valid GeoJSON"示例?

研究

我是Python和Django的新手,因此我还不太擅长阅读其他人的源代码,但我想我可以得出结论,我需要以某种方式覆盖该to_representation()方法以获得我想要的东西,但我的搜索是如此没有结果,所以我被卡住了.

models.py

class Location(models.Model):

    point = models.PointField()

class TrainStation(models.Model):

    location_signature = models.CharField(primary_key=True, max_length=32)
    advertised_location_name = models.CharField(max_length=32)
    country_code = models.ForeignKey(Country)
    county_no = models.ForeignKey(County)
    location = models.ForeignKey(Location, null=True)
Run Code Online (Sandbox Code Playgroud)

serializers.py

class LocationSerializer(ModelSerializer):

    class Meta:
        model = Location
        geo_field = 'point'
        fields = …
Run Code Online (Sandbox Code Playgroud)

django geodjango geojson django-rest-framework django-rest-framework-gis

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

如何在GeoDjango中计算两点之间的3D距离(包括海拔高度)

序幕:

这是在SO中经常出现的一个问题:

我想撰写一个关于SO文档的示例,但是geodjango本章从未停止过,并且自从文档于2017年8月8日关闭以来,我将遵循这个广受赞誉并讨论了元答案的建议,并将我的示例写为自我回答发布。

当然,我也很高兴看到任何其他方法!!


题:

假设模型:

class MyModel(models.Model):
    name = models.CharField()
    coordinates = models.PointField()
Run Code Online (Sandbox Code Playgroud)

我将点存储在coordinate变量中作为lan, lng, alt点的位置:

MyModel.objects.create(
    name='point_name', 
    coordinates='SRID=3857;POINT Z (100.00 10.00 150)')
Run Code Online (Sandbox Code Playgroud)

我正在尝试计算两个这样的点之间的3D距离:

p1 = MyModel.objects.get(name='point_1').coordinates
p2 = MyModel.objects.get(name='point_2').coordinates

d = Distance(m=p1.distance(p2))
Run Code Online (Sandbox Code Playgroud)

现在d=X以米为单位。

如果仅更改其中一个点的高度,则:

例如:

p1.coordinates = 'SRID=3857;POINT Z (100.00 10.00 200)'
Run Code Online (Sandbox Code Playgroud)

从150以前,计算:

d = Distance(m=p1.distance(p2))
Run Code Online (Sandbox Code Playgroud)

d=X再次返回,就像忽略高程一样。
如何计算两点之间的3D距离?

python gis django postgis geodjango

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