Forum QGIS

Pełna wersja: Zmiany wartości pól shapefile przy zapisie warstwy
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć!

Jestem nowym użytkownikiem tego forum, chociaż QGISa używam już pewien czas. Ostatnio natknąłem się na następujący problem, z którym nie umiem sobie poradzić.

Mam warstwę Shape jednostek administracyjnych, w której jest sporo różnych pól liczbowych o typie rzeczywistym. Wiele jednostek ma wartości poszczególnych pól równe -1,2e+37, co wg dostawcy warstwy ma oznaczać brak danych.
Problem polega na tym, że jak w QGIS zapiszę tę warstwę (nadal jako Shape) do innego pliku, wartości tych pól zamieniają się na -1,2e+11. Pozostałe pola, dla których są jakieś "prawdziwe" wartości, zapisują się bez zmiany.
Czy ktoś wie, dlaczego są takie zmiany podczas zapisu i jak można temu zaradzić?

Pozdrawiam wszystkich świątecznie i noworocznie!
(28-12-2015, 16:11)grafal napisał(a): [ -> ]Cześć!

Jestem nowym użytkownikiem tego forum, chociaż QGISa używam już pewien czas. Ostatnio natknąłem się na następujący problem, z którym nie umiem sobie poradzić.

Mam warstwę Shape jednostek administracyjnych, w której jest sporo różnych pól liczbowych o typie rzeczywistym. Wiele jednostek ma wartości poszczególnych pól równe -1,2e+37, co wg dostawcy warstwy ma oznaczać brak danych.
Problem polega na tym, że jak w QGIS zapiszę tę warstwę (nadal jako Shape) do innego pliku, wartości tych pól zamieniają się na -1,2e+11. Pozostałe pola, dla których są jakieś "prawdziwe" wartości, zapisują się bez zmiany.
Czy ktoś wie, dlaczego są takie zmiany podczas zapisu i jak można temu zaradzić?

Pozdrawiam wszystkich świątecznie i noworocznie!

-1,2e+37 = -1,2*10^37
może chodzi o długość pola liczbowego? Może się skraca o te 26 zer?
Dziękuję za odpowiedź.

Ale zarówno w oryginalnym shapefile, jak i w tym po zapisie są to pola o typie double, długość 12, dokładność 11.
Hm, może udałoby się wprowadzić tę wartość w Ustawienia->Opcje->Źródła danych->"Wartość NULL jest reprezentowana przez"?
Niestety to nie działa. Tzn. rzeczywiście zamiast NULL wyświetla się "-1.2e+37", ale raczej jako tekst niż wartość liczbowa.

Sprawdziłem, że przyczyną zmiany wartości przy zapisie shapefile jest właśnie ta długość i dokładność (czyli ilość miejsc po przecinku). Tylko QGIS nie pozwala, aby długość była >20, a dokładność >15. Zatem nie da się wpisać tam liczby o wartości bezwzględnej >1,9e+19, a jeśli się wpisze większą, to zostanie przycięta do tej wartości.
Swoją drogą, jest to dziwne, bo w dokumentacji shapefile (http://www.esri.com/library/whitepapers/...pefile.pdf) jest napisane, że każda liczba mniejsza niż -10^38 jest traktowana jako "brak danych". A w QGIS nie można takiej liczby w ogóle wpisać. Wygląda na to, że QGIS zapisuje liczby zmiennoprzecinkowe dokładnie, a nie w postaci wykładniczej, a to jest chyba błąd.

Jedyne, co udało mi się zrobić, to otworzyć plik .dbf w zewnętrznym programie (DBF Manager - http://astersoft.com/dbfmanager/) i tam wpisać wartości -1,2e+37. Są one potem poprawnie interpretowane przez QGIS, co można sprawdzić np. w Kalkulatorze pól. Problem występuje tylko podczas zapisu pliku przez QGIS.