我有一个包含locations以下列的表格:
latitudelongitude现在我想查询给定纬度/经度点的特定半径内的所有条目。
SELECT * FROM locations
WHERE ST_DWithin(
ST_MakePoint(longitude, latitude),
ST_MakePoint(-0.63098, 51.18291),
100
);
Run Code Online (Sandbox Code Playgroud)
上面的查询解释了我作为输入的数据以及我必须查询的数据。
有什么想法吗?
我已经成功使用谷歌地图绘图管理器。现在我面临一个问题。图中显示了折线和多边形两种形状。我想在单击这些图标时仅显示一个警报,即单击多边形时显示消息“单击多边形”,单击线条时显示消息“单击折线”。图标图像在这里
我需要将 potsgres 几何数据类型转换为经纬度。
geom 列存储坐标,但它们不是人类可读的。
我只是不知道如何获得构成多边形的每个点。
几何数据类型有一些输出选项https://postgis.net/docs/reference.html#Geometry_Outputs。
我需要每个点很长时间,因为我必须在这段代码中使用它们来定义和渲染谷歌地图上的多边形
$coords = [
new LatLng(['lat' => 25.774252, 'lng' => -80.190262]),
new LatLng(['lat' => 18.466465, 'lng' => -66.118292]),
new LatLng(['lat' => 32.321384, 'lng' => -64.75737]),
];
$polygon = new Polygon([
'paths' => $coords
]);
Run Code Online (Sandbox Code Playgroud)
问题是我无法访问经纬度来定义构成多边形的点。
我正在使用 YII2、yii2-google-maps 扩展、PostGis Postgress。
其实就是标题中的问题。
有一个表(osm_buildings),其中包含建筑物及其多边形的地址。并且有一个点,您需要找到距离该点最近的多边形。
求出点之间的距离非常简单且可预测,但是如何正确且最重要的是快速求出点到多边形的距离呢?
我面临的问题是:
AttributeError: module 'django.db.models' has no attribute 'MultiPolygonField'.
Run Code Online (Sandbox Code Playgroud)
当我尝试时它被 django 抛出makemigrations。旧的迁移文件(仅完成了 1 个 makemigrations 文件)已被删除。所以 Django 出于某种原因认为我导入django.db.models而不是django.contrib.gis.db.
我的 models.py 代码有问题(由于“geom”字段行上的代码中断)
from django.contrib.gis.db import models
from renter.models import *
from classification_list.models import*
class ForestryKeys(models.Model):
id = models.IntegerField(primary_key=True)
df_forestry = models.TextField(blank=True, null=True),
geom = models.MultiPolygonField(geography=True, null=True, blank=True, verbose_name='gmtry')
class Meta:
managed = True
verbose_name = 'frst'
verbose_name_plural = 'frtses'
Run Code Online (Sandbox Code Playgroud) 我有一个表,其中包含以这种方式创建的字段:
CREATE TABLE buildings(id SERIAL PRIMARY KEY, geom GEOMETRY, name VARCHAR(30));
Run Code Online (Sandbox Code Playgroud)
我想将简单的 2D 建筑插入其中,坐标如下 8 4, 10.5 4, 10.5 1.5, 8 1.5
INSERT INTO buildings(id, geom, name)
VALUES
(1, ST_GeomFromText('POLYGON(8 4, 10.5 4, 10.5 1.5, 8 1.5)'), 'BuildingA');
Run Code Online (Sandbox Code Playgroud)
由于某种原因我收到错误
ERROR: parse error - invalid geometry
HINT: "POLYGON(8 4" <-- parse error at position 11 within geometry
Run Code Online (Sandbox Code Playgroud)
如何将该多边形插入到表中?
我想为几何列设置一个默认值,指示它为空或空。例如,字符串最初初始化为空或“”以指示为空/空。对于几何图形来说,什么相当于 null/empty。要为几何列设置的值是什么表明它是空的。我尝试过0,""
但不允许将它们插入几何类型的列中
我正在使用 postgres/postGIS 我有两个我有兴趣查询的表:
table A: contains geometry values as (POINT) such as (P1, P2,P3,...)
table B: contains geometry values as (POLYGON) such as (Polygon 1, polygon 2, ...)
Run Code Online (Sandbox Code Playgroud)
我试图找到每个点位于哪个多边形内。我最有可能寻找的答案列出了点及其包含的多边形,例如:
| 观点 | 多边形 |
|---|---|
| P1 | 多边形3 |
| P2 | 多边形1 |
我尝试过以下内容:
SELECT *
FROM area, points
WHERE st_intersects(area.polygons, points.point) ;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: ST_Intersects: Operation on mixed SRID geometries (Polygon, 4326) != (Point, 8307)
非常感谢您的帮助。
我获得了一个PostgreSQL数据库,目前正在尝试绑定EF Core到它。由于数据库已经存在,我尝试构建一个上下文,并且成功地发出了类似于以下内容的警告:
找不到数据类型为“x.geometry”的列“x.Polygons.Shape”的类型映射。跳过专栏。
我在脚手架时跳过了所有此类列,并尝试手动恢复它们:
public sealed class Polygon
{
public int Id { get; set; }
public DateOnly CreationDate { get; set; }
public DateOnly ModificationDate { get; set; }
public DateOnly SurveyDate { get; set; }
public Geometry Shape { get; set; } //This (and similar) column was added manually
}
Run Code Online (Sandbox Code Playgroud)
之后,我将脚手架实体配置提取并修补到一个单独的类,如下所示:
public sealed class PolygonConfiguration : IEntityTypeConfiguration<Polygon>
{
public void Configure(EntityTypeBuilder<Polygon> builder)
{
builder.ToTable("Polygons", Constants.DatabaseScheme);
builder.HasIndex(e => e.Id, "idx_Polygons_ID");
builder.Property(e => e.Id).HasColumnName("ID");
builder.Property(x => …Run Code Online (Sandbox Code Playgroud) postgis ×10
postgresql ×9
python ×2
sql ×2
c# ×1
distance ×1
django ×1
geometry ×1
gis ×1
google-maps ×1
intersection ×1
javascript ×1
php ×1
psql ×1
yii2 ×1