问题标签 [geoalchemy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
952 浏览

python-2.7 - 使用带有列覆盖的元类的 SQLAlchemy 反射

我有一组动态数据库表(带有 PostGIS 的 Postgres 9.3),我正在使用 python 元类进行映射:

其中,db.Model 是通过 flask-sqlalchemy 生成的 db 对象,而 tablename 是一些 unicode。然后将 cls 添加到应用程序范围的字典current_app.class_references(使用 Flask 的 current_app)以避免尝试多次实例化该类。

每个表都包含一个几何列,wkb_geometry存储在 Well Known Binary 中。我想将这些映射到使用geoalchemy2,最终目标是检索 GeoJSON。

如果我先验地声明该表,我将使用:

由于我试图动态地执行此操作,因此我需要能够cls1使用已知类型覆盖反射。

尝试:

  1. 使用反射覆盖语法显式定义列。

    /li>

它在重新启动时返回以下内容,即尚未实例化该类: InvalidRequestError: Table 'tablename' is already defined for this MetaData instance。指定 'extend_existing=True' 以重新定义现有 Table 对象上的选项和列

  1. 对上面定义的类使用 mixins(无表名):

    /li>

再次元数据问题。

  1. 类实例化后覆盖列定义属性:

    /li>

结果是:

InvalidRequestError:在属性“wkb_geometry”下将列 tablename.wkb_geometry 与列 tablename.wkb_geometry 隐式组合。请为这些同名列显式配置一个或多个属性。

是否可以使用元数据构造来支持动态反射**和* *覆盖一个已知的列将在所有表上可用?

0 投票
1 回答
404 浏览

python - 如何在 python (geoalchemy) 中设置空间 SQL 查询的范围

自从几天以来,我一直在忙于弄清楚如何使用 geoalchemy2 从 PostGIS 数据库中正确查询数据,geoalchemy2 是 python 支持空间数据库操作的 sqlalchemy 的扩展。

我正在使用来自勃兰登堡(德国行政区)的 python3.4 和 Openstreetmaps 数据,这些数据输入到我当地的 Postgres-DB 中。数据以纬度/经度为单位。我一直在关注如何使用 geoalchemy 包的 ORM 部分进行设置的教程(https://geoalchemy-2.readthedocs.org/en/latest/orm_tutorial.html)。一开始,一切都很顺利

  1. 定义映射

    /li>
  2. 定义数据库设置

    /li>
  3. 做我的查询

    /li>

现在,在我尝试减少范围之前,一切都运行良好——因为我不想将所有建筑物都存储在我的数据库中,但可能只存储在给定边界或边界多边形内的建筑物。

  1. 通过定义边界框缩小范围(WKT 格式)

    /li>

我尝试将 .filter() 与各种选项一起使用,但没有成功。到目前为止,我理解 filter() 需要某种布尔输入,因此必须根据它定义一个语句。那么这样的声明有什么问题呢?

检查结果func.ST_Contains(bbox, QuerySchema.way)带来的结果<geoalchemy2.functions.ST_Contains at 0x10a12a400; ST_Contains>显然filter()无法正常工作。

问题:我必须如何执行操作才能正常工作,即只给我给定边界内的那些数据库条目?

0 投票
2 回答
2180 浏览

python-2.7 - 使用 sqlalchemy marshmallow 难以序列化地理列类型

我尝试使用 Marshmallow 进行反序列化和序列化 SQLAlchemy 对象,但在处理 ORM 中的地理字段时遇到问题。

首先是模型:

其次是棉花糖模式:

然后尝试运行时出现错误:

我在位置字段上尝试了一些覆盖,但无济于事。非常感谢任何帮助。

2016 年 1 月 24 日更新

这是我的代码,因为它具有更简单的模型:

SQLAlchemy 模型:

marshmallow_sqlalchemy 模式对象

根据建议的其他管道:

在运行代码时:

我得到的结果是:

0 投票
2 回答
560 浏览

python-2.7 - 安装 ckanext-plugin 扩展后 CKAN 服务器关闭

我正在尝试按照下面列出的分步说明安装 CKAN ckanext-spatial 插件。

http://docs.ckan.org/projects/ckanext-spatial/en/latest/install.html#ubuntu-12-04-postgresql-9-1-and-postgis-1-5

安装和配置后,尝试访问站点主页时出现以下 apache 服务器错误。CKAN 目前无法使用。我需要升级 GeoAlchemy 的版本还是扩展的问题?

mod_wsgi (pid=29881):目标 WSGI 脚本 '/etc/ckan/default/apache.wsgi' 不能作为 Python 模块加载。mod_wsgi (pid=29881):处理 WSGI 脚本“/etc/ckan/default/apache.wsgi”时发生异常。回溯(最后一次调用):文件“/etc/ckan/default/apache.wsgi”,第 10 行,在 application = loadapp('config:%s' % config_filepath) 文件“/usr/lib/ckan/default/ lib/python2.7/site-packages/paste/deploy/loadwsgi.py”,第 247 行,在 loadapp 返回 loadobj(APP, uri, name=name, **kw) 文件“/usr/lib/ckan/default/ lib/python2.7/site-packages/paste/deploy/loadwsgi.py”,第 271 行,在 loadobj global_conf=global_conf) 文件“/usr/lib/ckan/default/lib/python2.7/site-packages/paste /deploy/loadwsgi.py",第 296 行,在 loadcontext global_conf=global_conf) 文件中"import (self.module_name, globals(),globals(), [' name ']) 文件“/usr/lib/ckan/default/src/ckan/ckan/config/middleware.py”,第 26 行,来自 ckan .config.environment import load_environment 文件“/usr/lib/ckan/default/src/ckan/ckan/config/environment.py”,第 17 行,在 import ckan.model 作为模型文件“/usr/lib/ckan/default /src/ckan/ckan/model/ init .py”,第 7 行,在导入 vdm.sqlalchemy 文件“ /usr/lib/ckan/default/lib/python2.7/site-packages/vdm/sqlalchemy/init.py”,第 32 行,从工具导入存储库文件“/usr/lib/ckan/default/lib/python2.7/site-packages/vdm/sqlalchemy/tools.py”,第 33 行,在 raise ValueError(" VDM 仅适用于 SQLAlchemy 版本 0.4 至 0.7,不适用于:%s" % sqav) ValueError:VDM 仅适用于 SQLAlchemy 版本 0.4 至 0.7,不适用于:1.0.12

0 投票
1 回答
1260 浏览

python - 如何在 GeoJSON 中转换 SDO_GEOMTRY

我使用 sqlalchemy 和 geoalchemy,并将我的结果转换为 geojson。用这样的正常方式:

这是不可能的,因为 cx_Oracle.Objets 不可序列化!我可以通过像这样的单独属性进行访问:

这是我的程序:

我将在 GeoJSON 中转换我的所有 cx_Oracle.Objects 但如何?在互联网上,是一个函数 sdo2geojson 可以在 sql developer 中正常工作,但当然这个函数对于 python 来说是未知的......

我希望有一个人可以帮助我???

0 投票
0 回答
493 浏览

postgresql - 使用 Python SQLAlchemy 将 POSTGIS 数据类型插入 PostgresDB

我正在尝试使用 SQLalchemy 将 Linestring、Polygon 和其他数据类型的 POSTGIS 值插入 postgres DB 并遇到以下错误:

这是使用 postgres db 命令创建的表的架构:

已经使用 DDL 语句创建了 postgres 表的模式。

我尝试使用 psycopg2 从 xml 插入 gml 值,并且使用以下方法成功插入:

输出--> 成功插入

但是当我使用下面的它失败使用 sqlalchemy 和 geoalchemy

输出==> InternalError: (psycopg2.InternalError) 解析错误 - 无效几何

如何使用 SQLalchemy 和 geoalchemy 将 GIS 数据类型插入 PostgresDB。

任何帮助将不胜感激谢谢!!!!我

0 投票
1 回答
818 浏览

python - 在 postgres 中使用 sqlalchemy 访问复合数据类型

我正在尝试使用 sqlalchemy 从 python 中的tiger.geocode 函数中提取复合列。
在纯 sql 形式中,这看起来像这样:

这会产生以下输出:

我面临的问题是如何在从 sqlalchemy 查询对象时引用复合列(rating、lon、lat、stno、street、styp、city、st、zip)?

谢谢,麻烦您了。

0 投票
0 回答
318 浏览

python - Python Insert geojson into mssql

I am attempting to load geojson from a file into mssql express using sqlalchemy for the insert and geopandas to load and read the file. sqlserver examples seems to be hard to find, but below is what i was able to scrape together at this point, which doesn't work.

does anyone have a working example of loading geojson into Sql Server sqlexpress with python?

0 投票
1 回答
226 浏览

python - 使用 ORM 在烧瓶 + geoalchemy 中查找 x 英里外的所有用户

我创建了以下 SQL 查询来查找一英里内的所有用户,它似乎工作正常:

但是我想将其转换为烧瓶/sqlalchemy/geoalchemy 查询?

0 投票
2 回答
3021 浏览

python - ModuleNotFoundError:没有名为“空间”的模块

我在一个脚本中遇到了模块未找到错误,它的所有要求都已安装。我正在尝试导入空间库:

该库位于: C:\Users\ASUS\AppData\Local\Programs\Python\Python37\Lib\site-packages\scipy\spatial

我检查了安装的软件包pip list,没关系。我尝试在 Pycharm 项目环境中安装 spatial-lib,但无法完成:

找不到满足空间库要求的版本(来自版本:)没有找到空间库的匹配分布您使用的是 pip 版本 10.0.1,但是版本 18.1 可用。您应该考虑通过“python -m pip install --upgrade pip”命令进行升级。

这无关紧要,因为我的点子是最新的。也许说得好,导入scipy也有这样的问题。