Những ưu và nhược điểm của các loại hình học và địa lý của PostGIS là gì?


86

Công ty của tôi sử dụng kiểu dữ liệu geometry( the_geom) để lưu trữ dữ liệu không gian địa lý.

Gần đây tôi đã làm quen với khái niệm kiểu dữ liệu geography( the_geog) mà theo tôi hiểu thì nó lưu trữ SRIDcùng với hình học.

Sự khác biệt giữa geographygeometry, và có bất kỳ lợi thế của việc sử dụng một trong số chúng trong cơ sở dữ liệu lớn?


Một vài câu trả lời nữa tại câu hỏi trùng lặp này: gis.stackexchange.com/questions/26082/iêu
Arto Bendiken

Câu trả lời:


74

Các tính năng địa lý luôn được lưu trữ trong WGS84 trước PostGIS 2.2; kể từ đó, bất kỳ hệ thống tham chiếu không gian dựa trên lon / lat có thể được sử dụng. Các phép đo dựa trên các tính năng địa lý sẽ được tính bằng mét thay vì đơn vị CRS và PostGIS sẽ sử dụng tính toán trắc địa thay vì hình học phẳng.

Không có tất cả các chức năng hỗ trợ hình học nhưng bạn có thể chuyển giữa hình học và địa lý. Để biết danh sách chức năng hiện tại, hãy xem: https://postgis.net/docs/PostGIS_ecial_Fiances_Index.html#PostGIS_GeographyFifts

Tôi không nghĩ có thể đề xuất địa lý hoặc hình học cho cơ sở dữ liệu lớn. Nó phụ thuộc vào những gì bạn đang làm với dữ liệu của bạn. Khi các tính toán trên hình cầu phức tạp hơn, tôi hy vọng các phân tích sẽ chậm hơn về các tính năng địa lý. Bạn cũng phải chuyển đổi tất cả dữ liệu của mình sang WGS84 để sử dụng địa lý.

Nếu bạn thực hiện nhiều phép đo và ví dụ phải so sánh kích thước của đa giác lớn, sẽ có ý nghĩa khi sử dụng địa lý hơn là hình học.

Tôi tìm thấy những điều hữu ích sau: http://postgis.net/workairs/postgis-intro/geography.html

Chủ đề cũng được đề cập trong "PostGIS in Action" (ISBN: Muff935182269).


"Địa lý được hỗ trợ bởi ..." điều này có cập nhật không?
Chris Anderson

@ChrisAnderson danh sách dài bây giờ: postgis.net/docs/...
Underdark

41

Tôi sử dụng "quy tắc ngón tay cái" trực quan của mình ... Thật hữu ích cho một quyết định nhanh chóng,

  • Giới thiệu về cơ sở dữ liệu của bạn : nếu các tính năng và / hoặc phân tích không gian có quy mô lục địa và cần độ chính xác (các ứng dụng nghiêm trọng) sử dụng địa lý . Khác sử dụng hình học: khi tất cả các cơ sở dữ liệu là về cùng một khu vực ( quy mô thành phố ) hoặc bạn không cần độ chính xác, vv bạn chỉ cần hình học.
    Xem quy tắc tương tự tại bài giảng gợi ý của @underdark .

  • Về nhu cầu của bạn về mặt CÂN B PERNG THỰC HIỆN / CHÍNH XÁC : hình học nhanh hơn; nếu bạn cần hiệu suất và suy nghĩ để sử dụng địa lý, trước tiên hãy làm điểm chuẩn của bạn.


Ý chính

Trên trang này, chúng tôi thấy một số từ khóa và trọng tâm của một số khái niệm: độ chính xác , hiệu suất và một cái gì đó như tính linh hoạt / hàng hóa sử dụng .

Như những người khác nhớ, sự khác biệt, đối với việc lưu trữ và tính toán, là việc sử dụng hình cầu trong địa lý và mặt phẳng trong hình học:

  • hình cầu (địa lý) là tốt hơn, chính xác hơn. Xem ví dụ Los Angeles / Paris .
  • sự phát triển của địa lý: như @DavidF nói, "loại địa lý được thêm vào gần đây, do đó, ít chức năng được hỗ trợ / thực hiện hơn".

Có lẽ vào năm 2020, tất cả các cơ sở dữ liệu GIS sẽ được đặt thành cùng một SRID / EPSG tiêu chuẩn (tương đương với mã 4326 hiện nay, cho WGS84). Ngày nay, địa lý không phải là một lựa chọn mặc định vì những hạn chế về hiệu suất và chức năng.

Thảo luận

Theo tôi đó là một câu hỏi về "thực tiễn tốt nhất", không phải là một vấn đề kỹ thuật / lý thuyết sâu sắc.

Độ chính xác

Sau khi ước tính lỗi trên dữ liệu của bạn, hãy kiểm tra và so sánh kết quả: mức tăng chính xác với địa lý có cao hơn lỗi dữ liệu không? Hàm ST_Distance (với bộ tổng hợp MAX và AVG ) là tham chiếu chính trong loại thử nghiệm này.

Hiệu suất

Ví dụ về điểm chuẩn trong khu vực đô thị ~ 100km2 (đường kính ~ 11km), tất cả được lưu trữ dưới dạng hình học, trong hệ tọa độ UTM phẳng. LƯU Ý: bắt đầu với chuyển đổi hình học / địa lý được sử dụng thường xuyên - thường xuyên vì một số chức năng không tồn tại và một số chức năng khác, như ST_Buffer và ST_Intersection, thực hiện chuyển đổi bên trong.

Băng ghế số 1: một bảng có ~ 87000 đa giác đại diện cho các lô đô thị, mỗi bảng có poly với (avg) ~ 13 điểm,

 BEGIN; EXPLAIN ANALYSE CREATE TABLE temp_geom AS 
        SELECT gid, the_geom FROM urbanlots; ROLLBACK;
 -- time 2080 ms   ~ 2.0 s
 BEGIN; EXPLAIN ANALYSE CREATE TABLE temp_geog AS 
        SELECT gid, Geography(ST_Transform(the_geom,4326)) AS geog 
        FROM urbanlots; ROLLBACK;
 -- time 12374 ms ~ 12.4 s  ~ 6 * geometry.

vì vậy, geography_time = 6 * hình học_time.

Cuốn số 2: một bảng có ~ 3500 đa giác đại diện cho các khối đô thị, mỗi bảng có poly với (avg) ~ 50 điểm: 0,6s so với 2,7 giây, geography_time = 4,5 * hình học_time .

Băng ghế số 3: ~ 10000 đường đại diện cho đường phố đô thị, mỗi đường có ~ 5 điểm. ~ 0,87s so với ~ 0,36s, địa lý_time = 2,4 * hình học_time .

Quay lại Cuốn số 2, tạo các bảng và thực hiện các truy vấn,

 EXPLAIN ANALYSE SELECT ST_Area(g.the_geom)+ST_Distance(g.the_geom,t.the_geom) 
         FROM temp_geom g, (SELECT the_geom FROM temp_geom WHERE gid=1) as t;
 -- time 182 ms   ~ 0.2 s
 EXPLAIN ANALYSE SELECT ST_Area(g.geog)+ST_Distance(g.geog,t.geog) 
         FROM temp_geog g, (SELECT geog FROM temp_geog WHERE gid=1) as t;
 -- time 58657 ms  ~ 59 s  ~  300*geometry
 -- curioselly for only distances, geography=4*geometry

Kết luận: đối với các nhiệm vụ nhỏ và nhận thức tốt, thời gian hội tụ đến "cùng thời gian chấp nhận được", nhưng đối với các nhiệm vụ lớn, có xếp hạng hiệu suất để xem xét.

Linh hoạt / Hàng hóa

Trên các điểm chuẩn tôi thực hiện một nhiệm vụ hàng ngày, kiểm tra số điểm (theo ST_NPoints) ... Đó là một ví dụ về hoạt động không tồn tại cho địa lý, cần diễn viên. "Diễn viên địa lý / hình học" là một nhiệm vụ khó chịu cho các lập trình viên, thạc sĩ, v.v.

Khi sử dụng lại các thư viện của các hàm SQL và PL / pgQuery, địa lý cần có sự thích ứng. Và, nếu bạn muốn tối ưu hóa mã hoặc tránh các vấn đề chính xác với nhiều chuyển đổi trung gian, việc không có một bộ chức năng tích hợp hoàn chỉnh, với địa lý, là một vấn đề khác. Chương trình cho địa lý, không phải là một nhiệm vụ dễ dàng.

Chỉ xử lý, trao đổi dữ liệu, vv

Đối với nhu cầu không thông thường, không có người dùng chuyên sâu như Mapserver, khi công việc duy nhất (PostGIS) của bạn là xử lý dữ liệu đầu vào và trả lại bất cứ lúc nào (như giờ hoặc ngày) dữ liệu đã xử lý, quy tắc ngón tay cái là "sử dụng địa lý nếu bạn thoải mái! " (xem "Linh hoạt / Hàng hóa" ở trên). Nếu không, hãy kiểm tra các quy tắc thông thường.
LƯU Ý: tất nhiên, nếu tác vụ (không thông thường) của bạn chỉ hiển thị dữ liệu từ PostGIS sang Mapserver, không cần xử lý, để giữ nguyên (hình học hoặc địa lý) của dữ liệu đầu vào của bạn, là quyết định tốt hơn.

Tôi tin rằng tập trung dữ liệu là một nhiệm vụ khác trong đó địa lý tốt hơn: trong bối cảnh sự đa dạng của các định dạng đầu vào và hệ thống tham chiếu là thông thường, việc sử dụng một tiêu chuẩn, như được thi hành bởi địa lý, có lợi ... Công ước về cấu hình là một nguyên tắc tốt khi tập trung hóa và trao đổi dữ liệu là trọng tâm kinh doanh (xem Google Maps!).


@Peter Liên quan đến tiêu chuẩn hóa dữ liệu, Geometry có phải là cách kết hợp dữ liệu ưa thích từ nhiều nguồn đôi khi với các hệ thống tham chiếu tọa độ tùy chỉnh (CRS) thành một loại dữ liệu không? Các hàm chuyển đổi như ST_GeomFrom*ST_As*có vẻ rất tiện dụng, đặc biệt là kết hợp với khả năng xác định CRS tùy chỉnh, để PostGIS xử lý các biến đổi trong các truy vấn và xuất trong một CRS duy nhất?
David LeBauer

@Peter Này, tôi đã tự hỏi, có một loại mực có chứa tất cả các chức năng địa lý không? Các chức năng hình học ở đây tôi đoán, nhưng các chức năng địa lý ở đâu? Cảm ơn bạn. Câu trả lời tuyệt vời btw, công việc thực sự tốt đẹp
slevin

11

Tôi tin rằng sự khác biệt đáng kể nhất là với loại địa lý, các phép tính được thực hiện trên một hình cầu đại diện cho trái đất trái ngược với bề mặt phẳng được sử dụng trong các tính toán được thực hiện trên các tính năng loại hình học.

Các tài liệu khá tốt: http://postgis.net/docs/manual-1.5/ch04.html#PostGIS_Geography

Loại địa lý đã được thêm gần đây, do đó, ít chức năng được hỗ trợ / triển khai.


9

Có thể bạn thấy tính năng này - và câu trả lời - là vô ích, nhưng một trong những lợi thế của việc làm việc với hình học là bạn có thể làm việc mà không cần bất kỳ tham chiếu không gian nào (nghĩa là SRID được đặt thành -1).

Hiện tại tôi đang làm việc trong một ứng dụng lọc dữ liệu LiDAR trên không, trong số các nguồn dữ liệu của nó là cơ sở dữ liệu PostGIS, cung cấp lập chỉ mục không gian hạng nhất ( RTree trên GiST ) và xử lý khối lượng dữ liệu lớn mà không gặp sự cố. Vì ứng dụng đó không yêu cầu thao tác hoặc phân tích các tính năng địa lý nên không cần SRID, do đó tránh được chi phí mà nó có thể mang lại.

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.