Zmiany wartości pól shapefile przy zapisie warstwy - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html) +--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html) +--- Wątek: Zmiany wartości pól shapefile przy zapisie warstwy (/thread-1262.html) |
Zmiany wartości pól shapefile przy zapisie warstwy - grafal - 28-12-2015 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! RE: Zmiany wartości pól shapefile przy zapisie warstwy - Konrad - 29-12-2015 (28-12-2015, 16:11)grafal napisał(a): Cześć! -1,2e+37 = -1,2*10^37 może chodzi o długość pola liczbowego? Może się skraca o te 26 zer? RE: Zmiany wartości pól shapefile przy zapisie warstwy - grafal - 29-12-2015 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. RE: Zmiany wartości pól shapefile przy zapisie warstwy - mickul - 31-12-2015 Hm, może udałoby się wprowadzić tę wartość w Ustawienia->Opcje->Źródła danych->"Wartość NULL jest reprezentowana przez"? RE: Zmiany wartości pól shapefile przy zapisie warstwy - grafal - 31-12-2015 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/pdfs/shapefile.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. |