Có giá trị Z giả nào được tiêu chuẩn hóa hay được sử dụng nhiều nhất không?


10

Tạo và nhập cả dữ liệu 2D và 3D, tôi đã nhiều lần gặp phải tình huống tôi không có giá trị Z cho tập hợp tọa độ, rằng giá trị của tọa độ Z dường như nằm ngoài phạm vi (như -99, -9999, -inf hoặc tương tự ) hoặc rằng tôi cần tạo tọa độ Z giả .

Tôi biết rằng câu trả lời cho câu hỏi của tôi là:

"Chỉ cần sử dụng một giá trị chắc chắn nằm ngoài phạm vi trong trường hợp của bạn."

Nhưng câu trả lời đó được đặt sang một bên Tôi tự hỏi liệu cộng đồng GIS có giá trị được tiêu chuẩn hóa hoặc được sử dụng thường xuyên nhất cho tọa độ Z giả không?

Câu trả lời:


5

Tất cả trả lời hiện tại cho lời khuyên tốt. Một quy tắc chung (từ cộng đồng máy tính khoa học) hoạt động tốt trong trường hợp bạn không thể lưu trữ null thực hoặc NaN là sử dụng giá trị nhỏ nhất (tiêu cực nhất) mà trường sẽ (hợp lệ) giữ.

Ví dụ:

  • Trường thập phân 7.2 có thể giữ giá trị nhỏ tới -9999,99.

  • Một raster số nguyên có thể chứa các số nhỏ như -32768, nhưng thường (do ác cảm với nhị phân và ái lực với cơ sở 10), giá trị -9999 được sử dụng thay thế.

  • Một số float có thể giữ các số theo thứ tự -10 ^ (38). Nếu bạn không thể đặt NaN vào trường, hãy tìm phao nhỏ nhất phù hợp (đó là một nỗi đau) hoặc chỉ sử dụng một cái gì đó như -10 ^ (38). Đối với nhân đôi, -10 ^ (303) hoạt động tốt, nhưng -10 ^ (38) cũng vậy: nó đủ lớn và tiêu cực để đóng vai trò là điểm đánh dấu rõ ràng của giá trị null.

Quy tắc này dễ nhớ, nhất quán, dễ áp ​​dụng, dễ viết tài liệu theo kiểu soạn sẵn (đối với siêu dữ liệu của bạn) và hiếm khi dẫn đến các lỗi vô ý (vì số âm nhất thường khác với dữ liệu mà nó sử dụng sai giá trị thực tế, thay vì là null, làm hỏng các tóm tắt thống kê và các tính toán khác đủ để đưa ra một cờ có vấn đề).


5

Nếu dữ liệu của bạn nằm trong cơ sở dữ liệu thì lý tưởng nhất là bạn sử dụng giá trị NULL :

một đại diện của "thông tin còn thiếu và thông tin không thể áp dụng"

Tuy nhiên, điều này có thể gây ra sự cố với các ứng dụng và mã ứng dụng khách và tôi không tin rằng NULL được hỗ trợ trong DBF. Giá trị mà tôi đoán là khác nhau đối với các quy ước tổ chức khác nhau. Bất kể giá trị giả nào bạn chọn, hãy đảm bảo rằng nó được ghi lại trong siêu dữ liệu của bộ dữ liệu.

Nếu không có điểm nào trong tập dữ liệu có giá trị Z thì tôi không hiểu tại sao 0 không thể được sử dụng, mặc dù trong trường hợp đó có lẽ tốt nhất là loại bỏ hoàn toàn nhận thức Z của tập dữ liệu để tránh nhầm lẫn.


2
+1 Hầu hết các sản phẩm ESRI, cũng như hầu hết các phần mềm khác, sẽ đọc null trong các trường dBase dưới dạng số không. Điều đó thật nguy hiểm, vì vậy việc sử dụng mã null rõ ràng trong các tệp .dbf (bao gồm cả shapefiles) là rất quan trọng.
whuber

4

Hầu hết các trình quét mà tôi đã sử dụng -9999.0 cho dữ liệu dấu phẩy động như một quy ước và GDAL sẽ sử dụng -dbl_inf khi bạn viết mã cho một hình ảnh không có giá trị nốt / giả. RGB 8 bit thường sẽ sử dụng 0 0 0 hoặc 255 255 255 hoặc có kênh alpha hoặc mặt nạ.

Bảo hiểm GML 3 (hiện tại không có nhiều hỗ trợ, nhưng điều đó sẽ thay đổi khi thông số WCS 2 được phê chuẩn) có một số giá trị giả được biểu thị dưới dạng văn bản như "mất tích" và "bị giữ lại".

Theo kinh nghiệm của tôi, bất kỳ mặc định nào cũng có xu hướng cụ thể theo tên miền hoặc dành riêng cho nhà cung cấp. Nếu bạn là nhà sản xuất dữ liệu chứ không phải là người tiêu dùng, hãy chọn một số và gắn bó với nó và đảm bảo người tiêu dùng của bạn biết về nó.


2

Tôi sẽ sử dụng NaN vì các phép toán sẽ tạo ra các NaN khác hoặc ném ngoại lệ. Bằng cách đó bạn có thể phát hiện ra rằng bạn đang rối tung lên vì bạn đang sử dụng một giá trị không có thật


2
NaN sẽ ổn khi tính toán (với các giá trị dấu phẩy động), nhưng bạn không thể lưu trữ NaN trong nhiều cơ sở dữ liệu hoặc định dạng dữ liệu GIS
geographika

2
+1 @geographika là chính xác. Tuy nhiên, quan điểm về việc sử dụng một giá trị sẽ làm rối tung các tính toán là một điều tuyệt vời.
whuber

đối với số nguyên, bạn có thể có NaN: num_limits <int> :: quiet_NaN ()
Ragi Yaser Burhum

Ngoài ra, khuyến nghị của tôi là sử dụng NaN vì nó liên quan đến giá trị Z bên trong hình học. Vì vậy, bất kể giá trị có trong cơ sở dữ liệu hay không, IMHO nên được tuần tự hóa với hình học - vì vậy nó sẽ hoạt động ...
Ragi Yaser Burhum
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.