Số liệu thống kê Zonal có thể có trong PostGIS2 không?


12

Bây giờ với postgis2 có hỗ trợ raster theo mặc định, có thể thực hiện phân tích thống kê khu vực không?

Tôi đã google nó nhưng tôi không tìm thấy gì vững chắc? Có một hướng dẫn khác để giúp tôi bắt đầu?

Bất cứ ai có thể cho tôi một ví dụ sql về cách làm điều đó?

BIÊN TẬP :

Một truy vấn cập nhật (đơn giản hóa) theo blog Aragon đề cập:

CREATE TABLE sum_pop3 AS 
 SELECT gid, SUM((ST_SummaryStats(ST_Clip(rast,1,geom))).sum)
 FROM perez_grid, ls_den
 WHERE ST_Intersects(geom,rast) 
GROUP BY gid;

Xin chào @nickves, bạn đã bao giờ quản lý để có được các số liệu thống kê khu vực làm việc chưa? Tôi dường như không thể làm cho truy vấn cập nhật hoạt động.
Vách đá

@CliffPatterson nhớ tôi đã làm việc - đã ba năm kể từ đó, rất nhiều thứ đã thay đổi. Tôi sẽ thử querry sau và xác nhận hoặc cập nhật.
biệt danh

một cái gì đó phải thay đổi từ lần trước tôi sử dụng nó; không đủ thời gian tại thời điểm này để xem Truy vấn đá ở đâu. nếu bạn quản lý để sửa nó, vui lòng cập nhật miễn phí
biệt danh

Kiểm tra câu hỏi gần đây của tôi về chủ đề này.
Vách đá

Câu trả lời:


6

bạn nên kiểm tra Lưu trữ, thao tác và phân tích dữ liệu raster trong tài liệu cơ sở dữ liệu không gian PostgreSQL / PostGIS của Pierre Racine và Steve Cumming đã được trình bày tại FOSS, tại đây . Có rất nhiều chức năng được định nghĩa là thống kê raster để giải quyết vấn đề của bạn. Tôi nghĩ rằng ST_SummaryStats sẽ giúp bạn về thống kê khu vực, tất nhiên, không đủ.

ST_SummaryStats(raster) sẽ biến cho bạn một tập hợp các bản ghi (min, max, sum, mean, stddev, Count (of withdata pixel)).

Postgis 2.0 hỗ trợ phân tích thống kê khu vực với một số truy vấn sql mà bạn đã làm việc trên đó. tôi đã tìm thấy một tài liệu tốt trên mạng về thống kê khu vực với esri vs postgis 2.0. bạn nên kiểm tra một số thông tin tại Move Spatial tại đây . cả hai đều được đưa ra cùng một kết quả thống kê với một số truy vấn khó.

ví dụ truy vấn được lấy từ trang Anthony Lopez mà tôi đã đề cập trước đó ...

 CREATE TABLE sum_pop2 AS
WITH 
   feat AS (SELECT gid, geom FROM perez_grid AS b ),
   b_stats AS
(SELECT  gid, (stats).*
FROM (
SELECT gid, ST_SummaryStats(ST_Clip(rast,1,geom)) AS stats
FROM ls_den
INNER JOIN feat
ON ST_Intersects(feat.geom,rast) ) AS foo )
SELECT gid, SUM(count) AS cell_count
  ,SUM(sum) AS population
FROM b_stats
 WHERE count > 0
GROUP BY gid
ORDER BY gid;

Kết quả thống kê của Esri Zonal: Dân số: 207.578 Số lượng tế bào: 14.400

Kết quả Phương pháp Postgis: Dân số: 207.578 Số lượng tế bào: 14.400.

Chênh lệch tỷ lệ phần trăm dân số: 0%

Tôi chưa thử nó nhưng Anthony đã đề cập rằng có một số vấn đề về hiệu suất với phân tích raster với postgis.

Tôi hy vọng nó sẽ giúp bạn...


Đó là một điểm khởi đầu tốt!
nickves
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.