천체 좌표에 대한 지리 데이터를 저장하기 위해 어떤 좌표계를 사용해야합니까?


37

천문학 프로젝트를하고 있습니다. 이미지에 대한 정보를 공간적으로 활성화 된 데이터베이스에 저장하고 싶습니다. 하늘이 완벽하게 구형으로 취급 될 수 있고 지구 표면과 같은 타원형 처리가 필요하지 않기 때문에 이것은 GIS 기능에 매우 쉬운 특수 사례라고 생각합니다. 불행히도, 나는 이것을 할 방법을 아직 찾지 못했고 타원형 지구를 사용하는 공간 함수로 광산을 피하고 있습니다. (도 대신 미터를 반환하는 대부분의 함수는 타원형 계산을 사용하고있을 수 있습니다. 다행히도 필자가 필요로 한 많은 PostGIS 함수는 문서에 반환 된 결과가 구체에 대한 것이 아니라 구체에 대한 것으로 명시되어 있지 않은 구현이 불완전한 것으로 보입니다. 타원체이지만 향후 버전에 따라 변경 될 수 있습니다.

배경 : 현재 PostGIS 및 WGS 84 좌표 (SRID = 4326)와 함께 PostgreSQL을 사용하고 있습니다. 이것은 꽤 잘 작동합니다. 나는 이미지의 네 구석의 오른쪽 상승과 경사에서 닫힌 폴리곤을 만들고 있습니다. 하늘의 넓은 영역을 덮고있는 많은 이미지 (10k 이상)가 있습니다. 각 이미지는 약 1도 정사각형입니다. 이 이미지 세트에서 15 ~ 30 개의 작은 이미지로 모자이크를 만듭니다. 각 모자이크는 약 1.5도 정사각형입니다.

현재, 나는 모자이크의 지리를 MULTIPOLYGON으로 저장하고 있는데, 이것은 모자이크에 들어간 각 이미지에 해당하는 모든 폴리곤으로 구성되어 있습니다. [더 나은 해결책은 모든 개별 다각형의 결합 둘레 를 설명하는 단일 POLYGON을 만드는 것 입니다. 이것이 구형 좌표 (즉, 지리 유형)에서 수행 될 수 있는지 모르겠습니다. 이것은 또한 저에게도 흥미로운 해답이 될 것입니다.] 날짜 선과 천구가 데이터 세트의 이미지에 포함될 수 있으므로 가능한 한 평면 좌표로 투영하는 것을 피하고 있습니다.

PostGIS 함수를 사용하여 천체 좌표에 어떤 좌표계를 사용해야 합니까?

나는 살펴 보았다 http://spatialreference.org/ 하지만 지금까지 아무것도 발견하지 않았습니다. 구글은 거의 나타나지 않았다. 나는 충격을 받았다. 기본적으로 함수가 미터를 거리로 반환하면 구의 큰 원을 따라 미터로 표시되도록하고 싶습니다.

보다 일반적으로, 공간 데이터베이스에서 천체 좌표를 사용하기위한 조언도 인정 될 것이다.

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
Kirk Kuykendall

이 USGS 프리젠 테이션 인 "PLANETARY GIS 101" 을보고 프로젝션에 대한 슬라이드가 몇 가지 있습니다. 아마도 도움이 될 것입니다.
jonatr

다중 다각형을 만드는 대신 그룹화 ID를 공유하는 다중 다각형을 만들어보십시오.
raphael

답변:


17

pgsphere를 확인하십시오. 천체 데이터를 처리하도록 특별히 설계되었습니다.

http://pgsphere.projects.postgresql.org/


이것은 매우 좋은 물건입니다. 불행히도, 그것은 "다중 폴리"지오메트리 클래스를 지원하지 않는 것 같습니다. 이 프로젝트에 큰 관심을 가져 주셔서 감사합니다.
Dr. Person Person II

1
이 링크를 따라 가려고하면 "이 서버에 액세스 할 수있는 권한이 없습니다."라는 메시지가 나타납니다.
PolyGeo

12

PostGIS에 천상의 위치를 ​​저장할 수 있습니다-당신은 당신의 자신의 좌표계를 생성해야합니다!

PostGIS는 spatial_ref_sys데이터베이스가 초기화 될 때 일반적으로 채워지는 테이블에서 모든 좌표계 및 투영 정보를 가져옵니다 . 그러나 자신만의 투영을 추가하는 것을 막을 수는 없습니다 . 실제로 실제로 권장 됩니다.

PostGIS는 거의 모든 GIS / 공간 데이터베이스 / 매핑 제품과 마찬가지로 프로젝션 요구에 Proj4를 사용하므로 Proj4 문자열을 spatial_ref_sys테이블 에 넣어야 합니다. Proj4 형식의 간단한 구형 SRS는 다음과 같습니다 +proj=longlat +ellps=sphere +no_defs. PostGIS에는 WKT 버전의 프로젝션이 필요하지만 예쁜 텍스트로 사용 된 것 같습니다.

또한 "권한"뿐만 아니라 새로운 SRS에 대한 고유 한 SRID도 제공해야하지만 원하는대로 사용할 수 있습니다.

에 새 항목을 삽입하려면 spatial_ref_sys다음 SQL을 수행하십시오.

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');

SRID로 40000을 선택했습니다. 이것은 천체 개체 테이블에서 사용하는 숫자입니다. 인증은 "ME"이지만 이름, 조직 또는 실제로 최대 256 자일 수 있습니다. 다음 숫자 1은 해당 항목에 대한 권한과 관련된 고유 식별자입니다. 이론적으로이 항목을 ME : 1로 지칭 할 수 있지만 모든 PostGIS 처리에서 고유 한 SRID가 계산됩니다. GDAL 및 Python으로 생성 한 WKT 항목 :

import osgeo.osr as osr
srs = osr.SpatialReference()
srs.ImportFromProj4('+proj=longlat +ellps=sphere +no_defs')
srs.ExportToWkt()

이제주의 사항 :

  • 오른쪽 상승은 시간 각도가 아닌 각도로 지정해야합니다.
  • 많은 PostGIS 기능은 투영되지 않은 데이터를 위해 설계된 것이 아니지만 WGS84 long / lat에 지상파 데이터가있는 경우에도 동일한 문제입니다.
  • 그것이 의미하는 바와 같이, 데이터는 지 중심이다. 관찰 작업을하고 싶다면 PyEphem 과 같은 것을 사용하는 것이 좋습니다 .
  • 이 SRS에서 데이터를 만들지 않았으므로 YMMV입니다.
  • 나는 지금 이것에 상당히 흥미가 있기 때문에 Hipparchos 카탈로그 가져 오기로 놀아야 할 수도 있습니다 ... :)

2
+1. HYG 데이터베이스 버전을로드 하고 올바른 승천에 15를 곱한 다음 180을 빼서 표준 GIS "경도"로 변환하고 원하는 구면 데이텀을 사용하여 하늘 매핑을 시작하는 것이 좋습니다 . 디스플레이 및 매핑의 경우, Gnomonic 및 Orthographic Projection이 상당히 표준입니다.
whuber

@ whuber : 그리고 위도? 12 월은?
Magno C

@MagnoC 예, 맞습니다. 필드는 내가 링크 한 웹 사이트에 설명되어 있습니다 : 조금 아래로 스크롤하면됩니다. 이를 확인하기 위해 "작은"버전 (31K 별만)을 3D보기 프로그램에 버리고 직교 좌표 (단위 천구의 경우 거리를 무시 함)로 변환하여 플롯했습니다.
whuber

@whuber : "RA, 12 월 : epoch 2000.0에 대한 별의 오른쪽 승천 및 편각. 1950.0 좌표를 사용하는 Gliese 카탈로그에만있는 별은이 좌표가 2000으로 세웠습니다." 위도 / 경도에 대해서는 명확하지 않습니다. 그래서, LON = (RA*15) - 180그리고 LAT = DEC?
Magno C

@MagnoC 나는 이것을 분류하는 데 도움 이되는 en.wikipedia.org/wiki/Equatorial_coordinate_system 을 발견 했다.
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.