gpt4 book ai didi

postgresql - 我如何在 typeorm 和 postgres 中使用经度和纬度

转载 作者:行者123 更新时间:2023-12-03 15:53:59 27 4
gpt4 key购买 nike

我当前的实体如下所示:

import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Landmark extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
id: string;

@Column()
longitude: number

@Column()
latitude: number
}
但我想知道是否有更好的方法来做到这一点,使用一种特殊的 postgres 类型,它适用于 typeorm。

最佳答案

您将要查看 Typeorm 中的 PostGIS 和空间列支持:
https://github.com/typeorm/typeorm/blob/master/docs/entities.md#spatial-columns
PostGIS 是一个扩展,您可以在 postgres 数据库中启用它来处理空间数据类型。安装 PostGIS 后,您可以在 Typeorm 查询构建器中使用其特殊的空间数据函数,就像使用由 GeoJSON 支持的任何其他 PG 函数一样。
Typeorm 的 postgres 驱动程序在内部使用 GeoJSON 与 PostGIS 一起使用,因此当您定义 Typeorm 模型时,您需要添加 @types/geojson ,这将使您可以按照要求正确键入 Typeorm 列。
例如,您可以导入 Geometry 类型定义并按如下方式键入您的列:

import { Geometry } from 'geojson';
...
@Column
location: Geometry
在您的情况下,您可能希望将 latitudelongitude 列组合成一个列—— location——它可以使用 point() 函数将纬度和经度组合成一个 Geometry 类型。
作为人为的示例,您可以执行以下操作:
UPDATE customers SET location = 'point(37.7, 122.4)' where id = 123;
这会将 location表上的 customers列(作为示例)设置为与San Francisco的经/纬位置相对应的 geometry(point)列类型。
如果您想将 lat/lon 的现有 double 列值(这是您自己存储 lat/lon 的方式)迁移到 location 类型的单个 geometry(point) 列,您可以使用开箱即用的 ST_MakePoint 函数邮政地理信息系统。
IE。
-- Assuming you have a lat and lon columns on the `customers` table that you are migrating to the PostGIS geometry(point) type
UPDATE customers SET location = ST_MakePoint(lat, lon) where id = 123;

关于postgresql - 我如何在 typeorm 和 postgres 中使用经度和纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65041545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com