我正在做一个天文学项目。我想将有关我们图像的信息存储在启用空间的数据库中。我认为,这对于GIS功能来说应该是一个非常简单的特殊情况,因为天空可以被视为完全球形,并且不需要像地球表面那样的椭圆形处理。不幸的是,我还没有找到实现此目的的方法,并且我一直在躲避具有使用椭圆形地球的空间功能的地雷。 (几乎所有返回米而非度的函数都可能使用椭圆计算。幸运的是,我需要的许多PostGIS函数似乎都具有不完整的实现,其中文档明确指出返回的结果是针对球体而不是针对
背景:我目前在PostgreSQL中使用PostGIS和WGS 84坐标(SRID = 4326)。这工作得很好。我正在通过图像四个角的正确提升和偏斜创建一个封闭的多边形。我有很多图像(10k或更多),覆盖了很大的天空。每个图像约为1度角。从这些图像的集合中,我正在从15到30张图像的小子集中制作马赛克。每个镶嵌图大约为1.5度平方。 [更好的解决方案是创建一个描述所有单个多边形并集周长的POLYGON。我不知道这是否可以在球坐标系中完成(即该地理类型)。对我来说,这也是一个有趣的答案。]日期线和天极可能包含在数据集中的图像中,因此我一直在尽可能避免投影到平面坐标。
使用PostGIS功能对天体坐标应该使用什么坐标系?谷歌几乎没有出现。我感到难过。基本上,我想确保如果一个函数返回的距离是米,那么它就是球体上大圆上的米。

我正在使用PostGIS 1.5.2。我尚未尝试过PostGIS 2.0。我很好奇ST_CoveredBy函数是否与POLYGON和地理类型的MULTIPOLYGON一起使用。如果有人正在运行2.0,能否告诉我是否出现与此相同的错误:
mydb=# select ST_CoveredBy(ST_GeographyFromText('MULTIPOLYGON(( (10.37795 -69.57926,8.9498 -69.54875,9.0178 -69.21643,10.4242 -69.24648,10.37795 -69.57926),(10.42436 -69.24618,9.01774 -69.2162,     9.08363 -68.88389,10.46914 -68.91344,10.42436 -69.24618)))'),ST_GeographyFromText('POLYGON((10.46915 -68.91315,9.08371 -68.88364,9.14755 -68.5513,10.5125 -68.58038,10.46915 -68.91315))'));
ERROR:  geography_covers: only POLYGON and POINT types are currently supported
CONTEXT:  SQL function "st_coveredby" statement 1


我已经尝试过PostGIS 2.0。此功能仍然仅适用于点和多边形,不适用于更一般的形状。

评论

这与wcs2kml相似吗?如果是这样,也许您可​​以修改一些代码以供使用。 code.google.com/p/wcs2kml

我参加了USGS的演示文稿“ PLANETARY GIS 101”,并简要地看到了一些投影的幻灯片,也许会对您有所帮助。
为什么不创建多个共享一个分组ID的多边形,而不是创建多个多边形?

#1 楼

查阅pgsphere,它是专门为处理天文数据而设计的。

评论


这是非常好的东西。不幸的是,它似乎不支持任何“ spolypoly”几何类。不过,感谢您在此项目上的出色表现。

– SO臭味
2010-10-19 5:55

当我尝试点击此链接时,我收到“禁止访问该服务器上的/的权限”。

– PolyGeo♦
18/12/15在6:24

#2 楼

可以在PostGIS中存储天体位置-您只需要创建自己的坐标系!

PostGIS从表spatial_ref_sys获取所有坐标系和投影信息,该表通常在初始化数据库时填充。但是,并没有阻止您添加自己的投影的方法-实际上,实际上是鼓励这样做的。您需要将Proj4字符串放入spatial_ref_sys表中。 Proj4形式的简单球形SRS为:+proj=longlat +ellps=sphere +no_defs。 PostGIS还需要投影的WKT版本,但我认为这只是一个漂亮的文字。 “,但这可以是您喜欢的任何东西。

因此,要将新条目插入spatial_ref_sys,只需执行以下SQL:我选择了40000作为SRID-这是您在天体表中使用的数字。身份验证为“ ME”,但这可以是您的姓名,组织或最多不超过256个字符的任何内容。下一个数字1只是您相对于授权机构该条目的唯一标识符。从理论上讲,您可以将该条目称为ME:1,但是对于所有PostGIS处理而言,其唯一的SRID都很重要。我使用GDAL和Python生成的WKT条目:

insert into spatial_ref_sys values(40000, 'ME', 1, 
'GEOGCS["Normal Sphere (r=6370997)",DATUM["unknown",SPHEROID["sphere",6370997,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]',
'+proj=longlat +ellps=sphere +no_defs');


现在要注意:
许多PostGIS功能不是为非投影数据设计的,但是如果WGS84长/纬度中的地面数据是同样的问题。数据是地心的。如果您想对其进行任何观测工作,建议您使用PyEphem之类的方法。我现在对此非常感兴趣,所以我可能不得不尝试导入Hipparchos目录... :)


评论


+1。您可以通过加载HYG数据库版本,将右提升量乘以15并减去180以转换为标准GIS“经度”,并使用您喜欢的任何完美球形基准,来开始绘制天空的映射。对于显示和制图,地标和正投影是相当标准的。

– hu
2014年1月27日18:45

@whuber:还有纬度?是DEC吗?

– Magno C
2014年1月29日在16:09

@MagnoC是的,这是正确的。这些字段在我链接到的网站上进行了描述:向下滚动一下。为了检查它,我将“小”版本(仅31K星)转储到3D观看程序中,转换为笛卡尔坐标(在单位天球上,忽略距离),并绘制它们:看起来不错。

– hu
2014年1月29日在16:11



@whuber:“ RA,12月:在2000.0时代,恒星的右仰和偏角。仅在使用1950.0坐标的格里斯星表中存在的恒星,这些坐标的前移为2000”。关于Lat / Lon,我不太清楚。因此,LON =(RA * 15)-180和LAT = DEC?

– Magno C
2014年1月29日在16:17



@MagnoC我发现en.wikipedia.org/wiki/Equatorial_coordinate_system有助于解决此问题。

– hu
2014年1月29日在16:19