Thực hiện đại số bản đồ raster trong web web nguồn mở?


9

Đại số bản đồ cho raster rất dễ dàng với ArcGIS Raster Calculator (hoặc QGIS). Tôi đã nghĩ rằng điều này sẽ dễ dàng với các máy chủ web web như GeoServer và MapServer cộng với OpenLayers, v.v. Những gì tôi muốn đạt được là làm những việc đơn giản như chia hai hình ảnh và tạo ra một hình ảnh tỷ lệ thứ ba sẽ được hiển thị trong trang web. Tôi đã dành nhiều tuần để tìm ra giải pháp và nó trở nên khá khó khăn (đối với tôi).

Tôi đã thử một vài thứ bao gồm:

  1. PostGIS raster. Tôi nghĩ đại số raster không phải là một vấn đề ở đây.

    Nhưng raster PostGIS khá khó để tải vào GeoServer. Có rất nhiều câu hỏi liên tục được hỏi về cách tải pgraster trong GeoServer. Xem ví dụ: Làm thế nào để nhập GeoTIFF qua postGIS vào GeoServer? ? , /gis/86006/publish-rasters-stored-in-postgresql-with-geoserver ?, trong số những người khác. Không có một câu trả lời nào ở đây trong GIS.SE hoặc trang web chính thức của GeoServer cung cấp một danh sách đầy đủ các bước có thể được thực hiện để làm việc. Tải pgraster vào MapServer đã báo cáo thành công, nhưng với hiệu suất rất chậm. Cả hai dường như yêu cầu một số ốp lát, và lệnh một lớp để nhập raster vào một trong hai máy chủ dường như không còn nữa.

  2. GeoTIFF

    GeoTIFF dễ dàng tải vào GeoServer và MapServer. Nhưng chúng ta có thể làm gì với nó? Không có PostGIS như SQL, tôi đã chuyển sang và tìm kiếm nhanh bằng WCS để làm đại số bản đồ, nhưng không tìm thấy nhiều. WCS có phải là con đường khả thi cho việc này với các máy chủ hiện tại không?

  3. Lập trình nó một cách khó khăn

    Bằng cách nào đó, sử dụng AJAX để gọi một trang PHP hoặc viết WPS bằng GeoServer để nhập hình ảnh vào PostGIS, thực hiện đại số bản đồ và sau đó chuyển đổi pgraster kết quả sang định dạng (ví dụ GeoTIFF) có thể dễ dàng tải và hiển thị trong GeoServer / MapServer.

  4. Tất nhiên, người ta có thể viết mã để đọc trực tiếp GeoTIFF và thực hiện đại số bản đồ mà không cần hỗ trợ của GIS.

Không có điều nào ở trên có vẻ dễ dàng hay hợp lý đối với tôi khi xem xét mức độ dễ dàng mà cùng một đại số có thể được thực hiện trong Desktop GIS.

Tôi đã tự hỏi nếu ai đó đã có bất kỳ kinh nghiệm nào khi thực hiện Đại số bản đồ trong môi trường web web và có thể đề xuất một con đường khả thi không?

Tôi quan tâm đến các giải pháp Nguồn mở (vì lý do chính trị trong tổ chức của tôi.) Tôi biết rằng ArcGIS Server có thể gọi mã python của ArcGIS, nhưng chúng tôi không có giấy phép và môi trường ở đây không thuận lợi để có được một.


"Có cách nào hợp lý để ..." là một cụm từ thực sự hay không (ví dụ: "Cách ..." hoạt động tốt) để đặt tiêu đề câu hỏi, vì vậy nếu bạn có thể nghĩ ra một cách tốt hơn để nêu Câu hỏi của bạn hơn những gì tôi đã đề nghị xin vui lòng làm như vậy. Ngoài ra, tôi coi từ "phần mềm" bao gồm các API và thư viện lập trình, chẳng hạn như GDAL, do đó, theo cách giải thích đó, việc bạn chỉnh sửa bản chỉnh sửa của tôi có lẽ là không cần thiết. Tuy nhiên, hãy làm những gì bạn muốn nếu bạn nghĩ nó làm rõ câu hỏi của bạn.
blah238

@ blah238 Cảm ơn bạn đã chỉnh sửa :). Tôi có lẽ đã dài dòng, nhưng tôi nghĩ rõ ràng có nhiều cách để ..., chỉ là họ dường như là nỗ lực vô lý so với thế giới ESRI / Máy tính để bàn. Ngoài ra, bạn đúng rằng "phần mềm" có thể bao gồm API. Tôi chỉ muốn nhấn mạnh rằng mã hóa nó từ đầu là một lựa chọn nếu không có gì khác dễ dàng đạt được đại số bản đồ.
tinlyx

Câu trả lời:


4

Chỉ sử dụng phần mềm nguồn mở, bạn gần như chắc chắn sẽ cần phải tự lập trình. GDAL là thư viện I / O raster mã nguồn mở thực tế , vì vậy bạn có thể sẽ sử dụng nó hoặc một trong nhiều trình bao bọc của nó. Bạn có thể sử dụng Python (ví dụ: rasterio + numpy / scipy ) hoặc node.js, ví dụ: nút-gdal (mặc dù vậy, hãy cẩn thận vì nó hiện đang đồng bộ / chặn). Đối với việc thực sự triển khai nó như một dịch vụ web, tôi không chắc đâu là cách tiếp cận tốt nhất, nhưng có một câu hỏi liên quan ở đây: So sánh các máy chủ GIS nguồn mở khác nhau?

Nếu lập trình không phải là vấn đề của bạn, bạn có thể xem FME Server . Đây là một sản phẩm thương mại nhưng có lẽ rẻ hơn đáng kể so với ArcGIS Server và nó có tất cả các loại máy biến áp tính toán raster , vì vậy tôi sẽ khá ngạc nhiên nếu họ không thể hoàn thành những gì bạn cần làm. Bạn sẽ không cần phải tải các trình quét vào cơ sở dữ liệu vì nó có thể đọc từ bất kỳ định dạng tệp raster nào .

Phần máy chủ sẽ cho phép bạn chạy các biến đổi (không gian làm việc FME) trên máy chủ và sử dụng API, ví dụ: API REST của máy chủ FME , để bắt đầu các biến đổi đó và truy cập kết quả.

Lợi ích chính là bạn sẽ không cần phải làm gì nhiều nếu có bất kỳ chương trình nào để khởi động và chạy các dịch vụ, chỉ cần một chút mã hóa đầu cuối để hoạt động với API.


+1 cảm ơn. Tôi cũng đã suy nghĩ về rasdaman. Tôi có thể lập trình, nhưng không cảm thấy đúng mã hóa trong nhiều năm sau đại số bản đồ.
tinlyx

+1 Để hỗ trợ python + gdal. Để làm đại số raster với numpy là một làn gió. Ngoài ra, nếu bạn đang làm việc với các trình quét dựa trên văn bản (như tệp .asc) thì bạn thậm chí không cần gdal (có thể gây khó khăn khi cài đặt, bằng cách sử dụng numpy.loadtxt (bỏ qua các hàng tiêu đề, dấu cách làm dấu phân cách, v.v.)
user1269942

Với rasdaman, bạn có khả năng sử dụng WCPS để xử lý trên máy chủ, mặc dù có thể bạn sẽ cần phải thực hiện một số kịch bản để tạo cú pháp WCPS vì việc thực hiện bằng tay có thể khó khăn.
nmtoken

2

Những gì bạn đang tìm kiếm là một máy chủ hình ảnh. ArcGIS for Server có phần mở rộng này:

Mở rộng hình ảnh ArcGIS cho máy chủ

tôi không biết bất kỳ tương đương nguồn mở.


1
OP đang yêu cầu làm thế nào để làm điều này trong ngữ cảnh web, không phải cho tiện ích mở rộng ArcGIS.
John Powell

2
@ JohnBarça tiện ích mở rộng được đề xuất là ArcGIS for Server và do đó được sử dụng trong ngữ cảnh web.
PolyGeo

@Pau Tôi quên nói rằng tôi bị hạn chế sử dụng GIS nguồn mở. Nhưng cảm ơn vì lời đề nghị. Nó hữu ích.
tinlyx

1
@TingL bạn có thể bắt đầu tìm kiếm các lựa chọn thay thế nguồn mở máy chủ hình ảnh arcgis
Pau

1

Bạn có thể làm điều này trong trình duyệt với WebGL:

http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/

nhưng nó sẽ yêu cầu một số chương trình và trình duyệt tuân thủ WebGL. Nhưng nó phải nhanh vì nó sẽ sử dụng GPU trong hầu hết các trường hợp.


1
Cảm ơn rất nhiều. Bạn có tham khảo nào về cách xử lý dữ liệu GIS như GeoTIFF trong WebGL không?
tinlyx
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.