Hệ tọa độ nào nên được sử dụng để lưu trữ dữ liệu địa lý cho tọa độ thiên thể?


37

Tôi đang làm một dự án thiên văn. Tôi muốn có thông tin về hình ảnh của chúng tôi được lưu trữ trong cơ sở dữ liệu được kích hoạt không gian. Điều này, tôi nghĩ, nên là một trường hợp đặc biệt rất dễ dàng đối với các chức năng của GIS vì bầu trời có thể được coi là hình cầu hoàn hảo và không cần xử lý hình elip như bề mặt trái đất. Thật không may, tôi chưa tìm được cách nào để làm điều này và tôi đã tránh được các mỏ có chức năng không gian sử dụng một trái đất hình elip. . ellipsoid. Nhưng điều đó có thể thay đổi với các phiên bản trong tương lai, đó là một nguyên nhân gây lo ngại.)

Bối cảnh: Hiện tại tôi đang sử dụng PostgreSQL với tọa độ PostGIS và WGS 84 (SRID = 4326). Điều này hoạt động khá tốt. Tôi đang tạo một POLYGON kín từ độ cao bên phải và độ suy giảm của bốn góc của hình ảnh. Tôi có rất nhiều hình ảnh (10k trở lên), bao phủ một khu vực rộng lớn trên bầu trời. Mỗi hình ảnh có diện tích khoảng 1 độ vuông. Từ bộ ảnh này, tôi tạo ra các bức tranh ghép từ các tập con nhỏ từ 15 đến 30 hình ảnh. Mỗi bức khảm có diện tích khoảng 1,5 độ vuông.

Hiện tại, tôi đang lưu trữ địa lý của các bức tranh khảm dưới dạng MULTIPOLYGON bao gồm tất cả các POLYGONS tương ứng với mỗi hình ảnh được đưa vào khảm. [Một giải pháp tốt hơn sẽ là tạo một POLYGON duy nhất mô tả chu vi liên kết của tất cả các đa giác riêng lẻ. Tôi không biết nếu điều này có thể được thực hiện trong tọa độ hình cầu (nghĩa là loại địa lý). Đây cũng là một câu trả lời thú vị đối với tôi.] Dòng ngày và cực thiên thể có thể được bao gồm trong một hình ảnh trong tập dữ liệu vì vậy tôi đã tránh chiếu tọa độ phẳng đến mức có thể.

Hệ tọa độ nào tôi nên sử dụng cho tọa độ thiên thể với các hàm PostGIS?

Tôi đã xem http://spatialreference.org/ nhưng không tìm thấy gì cho đến nay. Google đã bật lên rất ít. Tôi bối rối. Về cơ bản, tôi muốn đảm bảo rằng nếu một hàm trả về mét dưới dạng khoảng cách, thì nó là mét dọc theo một vòng tròn lớn trên một quả cầu.

Tổng quát hơn, một số lời khuyên cho việc sử dụng tọa độ thiên thể trong cơ sở dữ liệu không gian cũng sẽ được đánh giá cao.

Tôi đã sai lầm khi chọn PostGIS?

Có sự lựa chọn thương mại vượt trội?

Lựa chọn FOSS?


Tôi đang sử dụng PostGIS 1.5.2. Tôi chưa thử PostGIS 2.0. Tôi tò mò nếu hàm ST_CoveredBy hoạt động với POLYGON và MULTIPOLYGON của loại địa lý. Nếu bất cứ ai đang chạy 2.0, bạn có thể cho tôi biết nếu bạn gặp lỗi tương tự như sau:

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

Tôi đã thử PostGIS 2.0. Hàm này vẫn chỉ hoạt động trên các điểm và đa giác, không có hình dạng chung hơn.


Điều này có giống với những gì wcs2kml không? Nếu vậy, có lẽ bạn có thể điều chỉnh một số mã cho việc sử dụng của bạn. code.google.com/p/wcs2kml
Kirk Kuykendall

Tôi đã xem bài thuyết trình USGS này, "PLANETARY GIS 101" và thoáng thấy có một vài slide trên các dự đoán, có thể nó sẽ giúp bạn hiểu.
jonatr

Thay vì tạo nhiều đa giác, tại sao không tạo nhiều đa giác chia sẻ một id nhóm?
raphael

Câu trả lời:


17

Kiểm tra pgsphere, nó được thiết kế đặc biệt để xử lý dữ liệu thiên văn.

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


Đây là thứ rất tốt. Thật không may, nó dường như không hỗ trợ bất kỳ lớp hình học "smultipoly" nào. Cảm ơn vì sự ủng hộ tuyệt vời cho dự án này.
Tiến sĩ Person Person II

1
Khi tôi cố gắng theo liên kết này, tôi nhận được "Cấm bạn không có quyền truy cập / trên máy chủ này."
PolyGeo

12

Có thể lưu trữ các vị trí thiên thể trong PostGIS - bạn chỉ cần tạo hệ tọa độ của riêng mình!

PostGIS nhận được tất cả hệ thống tọa độ và thông tin chiếu từ bảng spatial_ref_systhường được điền khi cơ sở dữ liệu được khởi tạo. Nhưng không có gì ngăn cản bạn thêm các dự đoán của riêng bạn - thực sự nó được khuyến khích .

Tương tự như hầu hết mọi sản phẩm lập bản đồ / cơ sở dữ liệu không gian / GIS ngoài kia, PostGIS sử dụng Proj4 cho nhu cầu trình chiếu của nó, và vì vậy bạn cần đặt chuỗi Proj4 vào spatial_ref_sysbảng. Một SRS hình cầu đơn giản ở dạng Proj4 là : +proj=longlat +ellps=sphere +no_defs. PostGIS cũng yêu cầu phiên bản WKT của phép chiếu, nhưng tôi nghĩ rằng nó chỉ được sử dụng dưới dạng văn bản đẹp.

Bạn cũng sẽ cần đưa ra một SRID duy nhất cho SRS mới của mình, cũng như một "cơ quan", nhưng đây có thể là bất cứ điều gì bạn thích.

Vì vậy, để chèn một mục mới vào spatial_ref_sys, chỉ cần thực hiện SQL này:

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

Lưu ý rằng tôi đã chọn 40000 làm SRID - đây là số bạn sử dụng trong bảng đối tượng thiên thể của mình. Quyền tác giả là "TÔI", nhưng đây có thể là tên, tổ chức của bạn hoặc bất kỳ thứ gì thực sự lên tới 256 ký tự. Số tiếp theo, 1, chỉ là số nhận dạng duy nhất của bạn cho mục đó, liên quan đến quyền hạn. Về lý thuyết, bạn có thể gọi mục này là ME: 1, nhưng đối với tất cả quá trình xử lý PostGIS, SRID duy nhất của nó được tính. Mục WKT tôi đã tạo bằng GDAL và Python:

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

Bây giờ hãy cẩn thận:

  • Sự thăng thiên phải sẽ được chỉ định theo độ chứ không phải theo giờ.
  • Một số chức năng PostGIS không được thiết kế cho dữ liệu chưa được cung cấp, nhưng đó là vấn đề tương tự nếu bạn có dữ liệu trên mặt đất trong WGS84 dài / lat.
  • Khi nó đứng, dữ liệu là địa tâm. Nếu bạn muốn thực hiện bất kỳ công việc quan sát nào với nó, tôi khuyên bạn nên sử dụng một cái gì đó như PyEphem .
  • Tôi đã không thử tạo bất kỳ dữ liệu nào trong SRS này, vì vậy YMMV.
  • Bây giờ tôi khá thích thú với điều này, vì vậy tôi có thể phải loay hoay với việc nhập danh mục Hipparchos ... :)

2
+1. Bạn có thể có một khởi đầu tốt khi lập bản đồ bầu trời bằng cách tải một phiên bản của cơ sở dữ liệu HYG , nhân số tăng đúng với 15 và trừ 180 để chuyển đổi thành "kinh độ" tiêu chuẩn của GIS và sử dụng bất kỳ dữ liệu hình cầu hoàn hảo nào bạn muốn. Để hiển thị và ánh xạ, các phép chiếu gnomonic và orthographic là khá chuẩn.
whuber

@whuber: và vĩ độ? là tháng mười hai
Magno C

@MagnoC Vâng, đúng vậy. Các trường được mô tả trên trang web tôi liên kết đến: chỉ cần cuộn xuống một chút. Để kiểm tra, tôi đã đổ phiên bản "nhỏ" (chỉ có 31K sao) vào chương trình xem 3D, chuyển đổi sang tọa độ cartesian (trên một quả cầu thiên thể đơn vị, bỏ qua khoảng cách) và vẽ chúng: có vẻ tốt.
whuber

@whuber: "RA, Dec: Sự thăng thiên và suy giảm bên phải của ngôi sao, cho kỷ nguyên 2000.0. Các ngôi sao chỉ có trong Danh mục Gliese, sử dụng tọa độ 1950.0, đã có các tọa độ này trước năm 2000". Tôi không rõ lắm về Lat / Lon. Vì vậy, LON = (RA*15) - 180LAT = DEC?
Magno C

@MagnoC Tôi đã tìm thấy en.wikipedia.org/wiki/Equatorial_coordinate_system sẽ hữu ích trong việc phân loại này.
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.