gpt4 book ai didi

postgresql - PostGIS - 创建椭圆

转载 作者:行者123 更新时间:2023-11-29 11:51:17 25 4
gpt4 key购买 nike

我正在尝试构建一个函数来创建一个椭圆而不通过经典编程语言。我将这些参数存储在自定义 GeoJSON 中。smallSide 和 bigSide 必须以米为单位表示。生成的几何图形必须使用 EPSG 4326 创建:

我的参数是:

 "geography" : {"type":"Ellipse",
"smallSide":100,
"bigSide" : 110,
"rotation" : 0,
"coordinates":[8.54736328125,46.37156925087649]}

在网上搜索我发现这个解决方案非常接近解决我的问题:

ST_AsEWKT(ST_Translate( ST_Rotate( ST_Scale( ST_Buffer(ST_Point(8.54736328125,46.37156925087649)::geography, 3000)::geometry, 0.3,0.5)::geometry, 0), 8.54736328125,46.37156925087649))

此函数在挪威附近创建一个椭圆。试试:http://geojson.io/#map=11/69.5354/11.1216

原中心在瑞士。

这个函数有两个大问题:1. 椭圆不在坐标中心;2.不知道如何转换xFactor/yFactor of Scale来匹配仪表参数;

附言。这是上述函数的 WKT:

SRID=4326;POLYGON((11.123273576134 69.5574277440815,11.1230606869505 69.5547928070317,11.1224064250309 69.55225640052,11.1213360407351 69.5499159578464,11.1198907409861 69.547861360983,11.1181260946945 69.5461714955871,11.1161098932273 69.5449112303195,11.1139195487472 69.544128934906,11.1116391298573 69.5438546306632,11.1093561468668 69.5440988431489,11.1071582077927 69.5448522000687,11.1051296707337 69.5460857895281,11.1033484183676 69.5477522651534,11.1018828760511 69.5497876565102,11.100789386429 69.5521138166206,11.1001100408036 69.554641414163,11.099871051113 69.5572733570283,11.1000817266595 69.5599085170987,11.1007340973332 69.5624456140896,11.1018032006992 69.5647871095818,11.1032480248444 69.5668429613212,11.105013073265 69.5685340926073,11.107030493374 69.5697954420587,11.1092226874817 69.5705784748924,11.1115053053956 69.5708530575261,11.1137905020249 69.5706086220194,11.1159903323456 69.5698545746198,11.1180201503338 69.568619932341,11.1198018783021 69.5669522018393,11.1212670184877 69.5649155445927,11.1223592894673 69.5625883002992,11.1230367854657 69.5600599653373,11.123273576134 69.5574277440815))

最佳答案

欢迎来到 Stack Overflow!我不确定我是否完全理解参数 bigSidesmallSide,但是如果您只是想使用米作为参数围绕一个点创建缓冲区,您可以使用像这样:

SELECT 
ST_AsText(
ST_Rotate(
ST_Buffer(
ST_GeomFromText('SRID=4326;POINT(8.54736328125 46.37156925087649)')::GEOGRAPHY,3000, 'quad_segs=16')::GEOMETRY,0));

这将在给定点(瑞士南部)周围绘制缓冲区:

enter image description here

注意:使用GEOMETRYGEOGRAPHY 进行的计算是不同的,它们的结果也是如此。 GEOGRAPHY 计算球面上的坐标(这可能比 GEOMETRY 慢得多)并使用 作为测量单位,而 GEOGRAPHY使用平面投影,使用SRS单位。 (文字来自this answer)

关于postgresql - PostGIS - 创建椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50793117/

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