Làm thế nào để khắc phục quá trình khảm lớn đang thất bại?


11

Tôi cần ghép khoảng 550Gb hình ảnh tif lại với nhau và phần mềm tôi đã thử liên tục bị lỗi. Khu vực này đã được chia thành các khu vực để nhỏ nhất có khoảng 200 gạch.

Tôi đã sử dụng các phiên bản mới nhất của ERDAS (Imagine và Mapper), ArcINFO và Global Mapper trên Intel Xeon E31245 3,30 gigahertz, DELL, RAM 16 GB, Win 7 Professional 64 bit. Máy Mullti-core (tổng cộng 4), siêu phân luồng (8 tổng). My C có 700GB miễn phí và D có 1,5TB.

Tôi đang xem xét sử dụng Grass (chưa từng có trước đây) nhưng i.image.mosaic dường như chỉ xử lý 4 tệp ... một số tệp của tôi có 600 ô. Bất kỳ tùy chọn khác hoặc phần mềm mã nguồn mở để thử?

Xin lỗi nên thêm rằng chúng tôi không thể sử dụng bộ dữ liệu khảm (hoặc tương đương trong phần mềm khác) vì chúng tôi cần tạo các vùng có các vùng không có dữ liệu được xác định là ecw để chúng có thể được mở trong bất kỳ phần mềm GIS nào và kết hợp với độ phân giải thấp hơn / cũ hơn dữ liệu khi dữ liệu mới không tồn tại liền mạch.

nhập mô tả hình ảnh ở đâyMột ví dụ về cách một số tệp được ghép trong giao diện phần mềm khác nhau. Global Mapper / ERDAS vẫn ổn nhưng điều đó không đúng trong arcgis.

--- THÔNG TIN SAU ---

nhập mô tả hình ảnh ở đây

Xin lỗi vì bản vẽ thô. Vì vậy, có các vùng màu là 5 vùng sẽ giảm thiểu vùng không có dữ liệu trong AOI lớn hơn.

Trong arcgis mã như sau (cái này được chạy dưới dạng mô hình chứ không phải trong python vì tôi không thể lấy nó để lấy đầu vào tifList).

arcpy.MosaicToNewRaster_management(tifList+";" +mask,RootOutput,"Tile1.tif","PROJCS['GDA_1994_MGA_Zone_55',GEOGCS['GCS_GDA_1994',DATUM['D_GDA_1994',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',10000000.0],PARAMETER['Central_Meridian',147.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]","16_BIT_UNSIGNED","0.5","3","MAXIMUM","#")

# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "test2"

arcpy.CopyRaster_management(OutputFile,RootOutput+"Tile1b.tif","#","256","256","NONE","NONE","16_BIT_UNSIGNED")

nơi tifList nên được đọc từ tệp csv nhưng điều này không hoạt động trong python nên tôi đang chạy ở trên trong một mô hình thay vì ...

Tôi có 1,5TB + dung lượng trống trên ổ đĩa của mình nhưng quá trình gặp sự cố với lỗi 9999.

Thậm chí 100 gạch sẽ xử lý? -ie chúng ta nên nhìn vào việc phá vỡ các khu vực hơn nữa?


3
Đó là một lượng dữ liệu điên rồ được đẩy xung quanh. Bạn không cố gắng hợp nhất nó vào một tệp TIF ginormous phải không? Tôi sẽ đề nghị tạo một bộ dữ liệu khảm hoặc một dịch vụ bản đồ được lưu trữ .
blah238

vâng, đó là ... không, lý tưởng nhất là 7 ecw's hoặc tif (nếu sử dụng arcgis). Tôi có thể thêm hình ảnh về kích thước / vùng nhưng không chắc điều đó có hữu ích không.
GeorgeC

Dựa trên nhận xét của bạn về tổ chức của bạn bằng MapInfo và phần mềm khác, thay vì ArcGIS, tôi sẽ xóa câu trả lời của mình, vì nó thực sự không giải quyết được nhu cầu của bạn. Tuy nhiên, tôi sẽ đề nghị bạn bao gồm một số chi tiết về các yêu cầu phần mềm của bạn trong câu hỏi của bạn để ngăn chặn việc tiếp tục đi xuống con đường Esri.
Nhận không gian

@GetSpatial - cảm ơn câu trả lời chi tiết. Đó là một giải pháp cho ngắn hạn và có lẽ chúng tôi sẽ sử dụng nó nhưng như tôi đã đề cập trong câu hỏi của mình, chúng tôi thực sự độc lập với phần mềm và có các biggies (ESRI / ERDAS / MAPINFO và Global Mapper). Chìa khóa cho chúng tôi là kết quả - ~ 5 Mosaics với các khu vực không có dữ liệu được xác định để có thể sử dụng hình ảnh khác. Các ECW nên có dữ liệu không có dữ liệu được xác định trong tất cả các phần mềm - chúng tôi đã tìm thấy một số khảm không giữ được các thuộc tính không có dữ liệu trong các phần mềm khác nhau. Tôi sẽ đăng một ví dụ. Cảm ơn một lần nữa. Tôi muốn yêu cầu bạn giữ câu trả lời của bạn ở đây, tôi sẽ bỏ phiếu cho nó.
GeorgeC

Câu trả lời:


9

Tôi sẽ phải đề xuất 2 @ blah238 về việc sử dụng một số phương pháp truy cập dữ liệu khác ngoài việc tạo một hình ảnh ghép đơn. Một phỏng đoán đơn giản sẽ nói rằng không có máy tính để bàn nào có thể xử lý lượng dữ liệu bạn sẽ phải xử lý để khảm tất cả các ô đó.
Để phá vỡ nó, có lẽ có hai nơi bạn đang hết không gian.

  1. Đầu tiên là trong bộ đệm RAM của bạn. Để khảm dữ liệu, bạn đang hợp nhất mọi thứ vào một tệp, điều đó có nghĩa là lý tưởng nhất là toàn bộ tệp sẽ được lưu trong bộ nhớ. Bạn không có 550GB RAM, nghĩa là sẽ có đọc / ghi từ bộ nhớ ảo. Đó là đủ để phá vỡ quá trình ngay tại đó.
  2. Vấn đề khác có thể là không gian đĩa cứng. Nhiều thao tác raster tạo các tệp tạm thời trong thư mục "không gian làm việc" của bạn khá lớn. Có thể có 2 hoặc 3 hoặc nhiều hơn trong số này trước khi tập dữ liệu cuối cùng được viết, do đó có thể hiểu được để sử dụng hết dung lượng đĩa của bạn trong quá trình xử lý.

Bây giờ, cho các giải pháp khác. Như đã đề cập trong các ý kiến ​​trên, có tùy chọn để tạo Bộ dữ liệu khảm . Bộ dữ liệu này sẽ cho phép bạn không chỉ coi tất cả các ô riêng lẻ như một hình ảnh liền mạch duy nhất mà còn duy trì siêu dữ liệu về các ô riêng lẻ có trong đó. Nó cũng cho phép bạn thực hiện các hoạt động raster như Hillshade .

Tùy chọn khác mà tôi muốn giới thiệu, dựa trên nhận xét của bạn về việc muốn tách các vùng sẽ là tạo Danh mục Raster . Một danh mục Raster về cơ bản là một lớp nhóm. Bạn có thể thêm nhiều bộ dữ liệu raster vào nó. Chúng có thể được quản lý trong cơ sở dữ liệu địa lý và nhập các trình quét hoặc chỉ cần tạo một bộ dữ liệu không được quản lý trong đó Danh mục Raster duy trì đường dẫn đến các bộ dữ liệu raster ban đầu. Khi bạn tải lớp này vào ArcMap, bạn có thể đặt thuộc tính hiển thị thành chỉ tải một số lượng gạch raster nhất định cùng một lúc hoặc đặt tỷ lệ và độ phân giải hiển thị.
Tôi hiện đang sử dụng một danh mục raster để xếp một bộ ảnh trên không 100 + GB. Hiệu suất rất tốt. Nếu bạn đang tìm kiếm một loại lưu trữ dữ liệu khác chỉ đơn giản là phương tiện để quản lý một số lượng lớn các ô, thì tôi thực sự muốn giới thiệu nó.

Đây là mã mà bạn có thể sử dụng để tạo Danh mục Raster và sau đó nhập không gian làm việc của các ô vào đó:

import arcpy
import os

newdir = r"c:\data"
dbname = "Aerialphotos.gdb"
gdbdir = os.path.join(newdir, dbname)
rcat = "AerialCatalog"

arcpy.CreateRasterCatalog_management(gdbdir, rcat,
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj", 
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj",
                                     "MAX_FILE_SIZE_4GB", "1000", "3000", "9000",
                                     "UNMANAGED", "")

#Load all raster datasets in workspace to Raster Catalog
rcatdir = os.path.join(gdbdir, rcat)
rastertiledir = os.path.join(newdir, "tiles")

arcpy.WorkspaceToRasterCatalog_management(rastertiledir, rcatdir,
                                          "INCLUDE_SUBDIRECTORIES",
                                          "PROJECT_ONFLY")

Hi vọng điêu nay co ich!

------------- Biên tập

Dưới đây là một hình ảnh của gạch được xử lý bởi danh mục raster của tôi. Lưu ý rằng bạn có thể chọn hiển thị khung lưới hoặc dữ liệu raster. Danh mục raster có một bảng thuộc tính mà bạn có thể thêm các trường vào, ví dụ nếu bạn muốn thêm các chỉ định vùng như trong đồ họa của bạn. Sau đó, bạn có thể chọn chỉ hiển thị các trình quét đó trong một khu vực cụ thể.
Khi in trong một đồ họa từ chế độ xem bố cục, độ phân giải đầy đủ của các trình quét được sử dụng, do đó không làm giảm chất lượng trong bản in.

nhập mô tả hình ảnh ở đây

Đây là đồ họa tương tự, nhưng hiển thị một số dữ liệu raster, cùng với một số khung lưới.

nhập mô tả hình ảnh ở đây


Cảm ơn bạn đã dành thời gian cho việc này. Đó là một giải pháp ngắn hạn tốt nhưng vì tổ chức sử dụng Mapinfo và các phần mềm khác, chúng tôi thực sự cần có khả năng tạo ecw với khu vực hội đồng được chia thành khoảng 5 khu vực. Mapinfo có các lớp liền mạch (tương tự như Danh mục Raster). Nhưng điều quan trọng là các khu vực không có dữ liệu được xác định để chúng tôi có thể lót hình ảnh mới bằng hình ảnh cũ có phạm vi bao phủ rộng hơn và chúng tôi giảm số lượng tệp cần mở.
GeorgeC

1
Trong tương lai, bạn có thể sẽ nhận được câu trả lời phù hợp hơn nếu bạn cung cấp loại thông tin này trong câu hỏi ban đầu của bạn.
Nhận không gian

1
Bạn đã xem xét những dịch vụ bản đồ web nào MapInfo có thể tiêu thụ chưa? Tôi nghi ngờ rằng bạn sẽ muốn đưa các phiên bản được lưu trong bộ nhớ cache của tất cả dữ liệu này lên máy chủ để tổ chức của bạn sử dụng chứ không phải dữ liệu thô. Tôi nghĩ rằng điều không có dữ liệu là một điểm cần thiết với các dịch vụ bản đồ vì bạn chỉ đơn giản là không tạo các ô ở nơi không có dữ liệu và bất cứ điều gì bên dưới sẽ hiển thị.
blah238

7

Tôi biết tôi đến bữa tiệc muộn. Nhưng đây là gợi ý của tôi.

1) kích thước hình ảnh
Nếu bản gốc 550GB của bạn không bị nén, bạn nên chuyển đổi chúng thành các tệp tiff nén jpeg. Giữ chúng một cách tự nhiên (không hợp nhất). Bạn có thể nén bằng arcgis, gdal, bất cứ thứ gì bạn thích. Nén sẽ giúp bạn có khoảng 23GB. Đừng tạo kim tự tháp / tổng quan chưa. Để nén, bạn có thể sử dụng bất kỳ chương trình gis nào bạn thích, nhưng tôi thích sử dụng gdal vì vậy về cơ bản lệnh này là:

gdalwarp -multi -wm 512 --config  GDAL_CACHEMAX 512 -co compress=jpeg -co tiled=yes -co jpeg_quality=70 -co PHOTOMETRIC=YCBCR -co INTERLEAVE=PIXEL uncompressed.tif compressed.tif

Bạn có thể dễ dàng tạo một tập tin dơi đi qua tất cả các tiff không nén của bạn. Tôi thích sử dụng gdalwarp để nén hình ảnh của mình thay vì gdal_translate thông thường, vì nó nhanh hơn (sử dụng nhiều tùy chọn cho đa lõi và -wm cho nhiều bộ nhớ).

2) xử lý như một hình ảnh duy nhất
Bạn có thể tạo khảm "ảo" bằng định dạng gdal vrt. Điều này tương thích với arcgis, qgis, mapserver, v.v. Không chắc chắn về mapper và mapinfo toàn cầu. Định dạng .vrt chỉ là một tệp xml duy nhất liệt kê hình ảnh của bạn. Đó là một lệnh duy nhất để tạo:

gdalbuildvrt nameofmosaic.vrt compressed_tif_folder\*.tif

Tập tin này có kích thước vài kb.

3) tăng tốc trực quan hóa
Bạn phải xây dựng kim tự tháp / tổng quan. Chỉ cần sử dụng phần mềm ưa thích của bạn cho việc này. Giữ với các công cụ gdal bạn có thể:

gdaladdo -ro -r average --config COMPRESS_OVERVIEW JPEG --config JPEG_QUALITY_OVERVIEW 70 nameofmosaic.vrt 2 4 8 16 32 64 128

Điều này sẽ mất một thời gian loong. Hãy sẵn sàng chờ 2 đến 3 ngày xử lý không ngừng.

4) sử dụng khảm
Tải khảm ảo trong chương trình gis của bạn. Sẽ nhanh thôi vì nó đang đọc các tổng quan chỉ trong 1 tệp như một ecw. Khi bạn phóng to độ phân giải thực của hình ảnh của mình, thì chỉ có một vài hình ảnh có thể nhìn thấy từ hình ảnh nén sẽ được đọc và điều đó cũng thực sự nhanh.

5) xử lý không có vùng dữ liệu nào hiển thị màu đen
Bạn có 3 giải pháp cho việc này: i) sử dụng định dạng tệp xử lý nốt, điều này sẽ phức tạp; hoặc ii) sử dụng băng tần alpha hoặc iii) tệp mặt nạ. Bạn có thể tự động tạo một dải alpha ở bước 2 bằng cách thông báo cho GDAL rằng bạn muốn các vùng gật đầu nằm trong dải alpha - bạn chỉ cần thêm tùy chọn -addalpha:

gdalbuildvrt -addalpha nameofmosaic.vrt compressed_tif_folder\*.tif

Vấn đề với các dải alpha là chúng nén kém. Vì vậy, tổng quan của bạn sẽ lớn hơn. Nếu điều đó ổn với bạn thì bạn đã hoàn thành.

Nếu bạn muốn tạo một tập tin mặt nạ, thì nó phức tạp hơn một chút. Và tôi thấy điều này không phù hợp với câu hỏi hiện tại.

Vì vậy, hy vọng điều này sẽ giúp. Bạn có thể tìm thông tin về các công cụ gdal bằng cách googling. Rất nhiều thứ thú vị xung quanh.


1
Bài đăng hay. Hãy lưu ý gdalwarp khi thực sự cong vênh (ví dụ như chiếu lại, resampling, vv) có một vấn đề lâu đứng với việc tạo ra nhiều lớn hơn cần thiết khi nén được sử dụng. Trong những trường hợp này, tốt hơn là bỏ qua việc nén ở giai đoạn gdalwarp và theo dõi gdal_translate -co compress=xxxsau đó. Đây không phải là một vấn đề nếu chỉ được sử dụng như một dịch giả (như được đề xuất ở đây).
matt wilkie

1
cảm ơn. Tôi nghĩ rằng vấn đề đã được giải quyết vì tôi đã chiếu và nén cùng một lúc gần đây và có tỷ lệ tốt.
Duarte Carreira

5

550gb dữ liệu TIF đầu vào được xử lý dễ dàng bằng một tệp ECW. Chúng tôi có nhiều khách hàng nén các bộ dữ liệu lớn hơn nhiều so với điều này vì vậy xin đừng nghĩ rằng định dạng này không có khả năng trong lĩnh vực này.

Chiến lược chia dự án của bạn thành các ô nhỏ để giảm thiểu diện tích null cũng là một cách tiếp cận tốt với phiên bản định dạng hiện tại vì nó sẽ giảm thời gian nén

Ví dụ của bạn bao gồm tham chiếu đến dữ liệu đầu vào 16 bit không dấu. Tôi sẽ khuyên bạn nên thay đổi kích thước thành 8 bit nếu có thể (tùy thuộc vào yêu cầu của bạn)

Vui lòng giải thích lý do tại sao bạn không thể xử lý dự án của mình bằng IMAGINE hoặc ERMapper vì không có thông tin này tôi không thể giúp bạn. Hoặc tốt hơn là liên hệ với nhóm hỗ trợ địa phương

Xin lưu ý rằng bằng cách sử dụng định dạng Bộ dữ liệu khảm ESRI, những gì các câu trả lời ở trên không đề cập đến là yêu cầu để tạo lớp kim tự tháp / tổng quan. Không có nó hiệu suất sẽ bị ảnh hưởng đáng kể. Có khả năng bạn có thể tạo các tệp tương đương ECW trong cùng một khoảng thời gian nhưng đã cải thiện chất lượng hình ảnh và yêu cầu lưu trữ đầu ra nhỏ hơn đáng kể.


1
Dựa trên thông tin mới được cung cấp, các khu vực ECW Null không hiển thị chính xác trong ESRI vì chúng vẫn đóng gói SDK v3 rất cũ không hỗ trợ kênh opacity (đơn giản là nó bị bỏ qua). Để khắc phục điều này, hãy truy cập erdas.com và tải xuống ArcGIS ECW Plugin sẽ cài đặt SDK v4 với hỗ trợ độ mờ và ECW sẽ hiển thị giống như trong phần mềm Globalmapper và ERDAS
Chris Tweedie

Chỉ cần lưu ý rằng plugin này đã khắc phục "sự cố" trong ArcGIS nhưng sau đó đã phá vỡ Mapinfo khi xem và do đó phải gỡ cài đặt trên bất kỳ máy nào có cả hai.
GeorgeC

4

Mặc dù rõ ràng tốt hơn để sử dụng một trong các tùy chọn khác được đề cập, bạn có thể thử như sau:

gdalbuildvrt index.vrt *.tif
gdal_translate -of "GTiff" -co "COMPRESS=LZW" -co "TILED=YES" -co "BIGTIFF=YES" index.vrt out.tif

Điều này xây dựng một định dạng ảo GDAL và sau đó chuyển đổi thành một GeoTiff duy nhất.


3

Điều đó nghe có vẻ khá quen thuộc đối với tôi, chúng tôi cũng sản xuất các tệp ECW lớn trong số 500 tệp TIF quá 1TB. Nhưng tôi sẽ không tồn tại trên ArcGIS (ArcObjects và Công cụ xử lý địa lý), vì nó không thể khảm số tiền này một cách đáng tin cậy. Nếu bạn muốn ở lại Thế giới ESRI, tôi khuyên bạn nên tạo các khối khảm khoảng 50 GB hoặc thậm chí nhỏ hơn cùng một lúc cho Bộ dữ liệu Raster được lưu trữ trong Cơ sở dữ liệu địa lý tệp. Công cụ khảm có xu hướng bị sập sau một thời gian, vì vậy, nên để ArcGIS giải phóng bộ nhớ sau một số GigaBytes.

Một khả năng khác là sử dụng Cơ sở dữ liệu địa lý SDE cho doanh nghiệp hoặc nhóm làm việc. Với SDE, bạn có được Công cụ dòng lệnh SDE cũ, được xây dựng trên kiến ​​trúc C ++ mạnh mẽ khác với công cụ ArcObjects không đáng tin cậy. Với lệnh "sderaster -o khảm ...", bạn có thể khảm vào RasterDataset cho đến khi cửa hàng Cơ sở dữ liệu của bạn đầy. Ngoài ra còn có các Lệnh xây dựng kim tự tháp một số liệu thống kê cho RasterDataset, nếu không thì nó không hữu ích lắm, vì hầu hết Khách hàng không thể giữ hình ảnh trong bộ nhớ khi đọc nó, như blah238 đã đề cập ở trên. Nhưng Kim tự tháp (thực tế là lập chỉ mục không gian) sẽ giải quyết vấn đề này.

Nhưng những giải pháp này không giúp bạn chắc chắn với MapInfo. Bạn đã đề cập rằng bạn đã thử ERDAS Mapper rồi. Đó cũng là công cụ tôi thích. Chúng tôi đã ghép 16000 tệp TIF, mỗi tệp có kích thước 50 MB, là 800 GB. Sau đó, chúng tôi đã nén nó thành một ECW duy nhất với tỷ lệ nén là 1:20 dẫn đến Tệp ECW 30 GB. Tôi tự hỏi rằng điều này không làm việc cho bạn ...

Ít nhất toàn bộ quá trình đã chạy trên một lõi Pentium 4 1,6 GHz với RAM 2 GB, vì vậy phần cứng không phải là vấn đề. Chúng tôi đang sử dụng Windows Server 2003 (hoặc một hệ điều hành máy chủ khác) vì nó sử dụng tốt hơn các nguồn tài nguyên harware. Hãy nhớ rằng, toàn bộ quá trình nén cần rất nhiều thời gian. Máy của chúng tôi đã hoạt động được khoảng 5 tuần trên một tệp duy nhất và vì đôi khi nó cũng bị hỏng nên chúng tôi phải thực hiện việc này nhiều lần, nhưng cuối cùng chúng tôi đã nhận được Tệp ECW của mình.

Tôi không biết một hệ thống hoặc cơ chế khác để lưu trữ một lượng lớn các raster theo cách trung lập chủ yếu là nhà cung cấp. Tất cả các cách được đề cập ở trên là rất cụ thể ESRI. Ít nhất là với Oracle RASTER và một triển khai khá giống nhau trong PostGIS, có hai Biến thể dữ liệu, cũng không phải là nhà cung cấp trung lập mà được mở thông qua Giao diện SQL / MM.

Mong rằng điều này giúp được chút ít.


Cảm ơn sự khuyến khích của bạn - đó là nó đã làm việc trên các bộ dữ liệu lớn hơn. Với ERDAS - vấn đề không chỉ là kích thước tập dữ liệu gây ra sự cố mà còn không có vùng dữ liệu nào không được xác định đúng. Xem câu hỏi cập nhật. Bạn đã ghi lại quá trình bạn sử dụng trong ERDAS và bạn có thể chia sẻ nó không?
GeorgeC
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.