GeServer.org posiada kilka ciekawych rozszerzeń. Można wejść na stronę
http://gridlock.opengeo.org/geoserver/2.1.x/community-latest/
i pobrać te rozszerzenia, które Cię interesują. Po rozpakowaniu pliki trzeba skopiować do
/usr/local/tomcat/webapps/geoserver/WEB-INF/lib
sobota, 10 grudnia 2011
piątek, 9 grudnia 2011
GeoServer i zmienne środowiskowe w Ubuntu
Nie udało mi się zmusić Tomcat'a 6 w Ubuntu, żeby czytał zmienne środowiskowe. Nie działa dla zmiennych ustawionych za pomocą polecenia:
export GEOSERVER_DATA_DIR=/var/geoserver_conf
oraz dla zmiennych ustawianych w pliku
/etc/environment
Po wielu próbach uznałem, że najlepszą metodą jest utalenie tych zmiennych bezpośrednio w pliku konfiguracyjnym Tomcat'a - gdzieś na początku pliku /etc/init.d/tomcat6 trzeba dodać linijki ze zmiennymi:
JAVA_OPTS="-server -Xms128m -Xmx512m"
GEOSERVER_DATA_DIR=/var/geoserver_conf
export GEOSERVER_DATA_DIR
Warto też poczytać:
http://docs.geoserver.org/stable/en/user/production/linuxscript.html
export GEOSERVER_DATA_DIR=/var/geoserver_conf
oraz dla zmiennych ustawianych w pliku
/etc/environment
Po wielu próbach uznałem, że najlepszą metodą jest utalenie tych zmiennych bezpośrednio w pliku konfiguracyjnym Tomcat'a - gdzieś na początku pliku /etc/init.d/tomcat6 trzeba dodać linijki ze zmiennymi:
JAVA_OPTS="-server -Xms128m -Xmx512m"
GEOSERVER_DATA_DIR=/var/geoserver_conf
export GEOSERVER_DATA_DIR
Warto też poczytać:
http://docs.geoserver.org/stable/en/user/production/linuxscript.html
poniedziałek, 5 grudnia 2011
niedziela, 4 grudnia 2011
XBMC - Dostosowywanie
Wyświetlanie tła podczas odtwarzania muzyki:
\usr\share\xbmc\addons\skin.confluence\720p\MusicVisualisation.xml
Początek pliku musi być taki:
Wyświetlanie częstotliwości próbkowania:
<control type="group">
<posx>370</posx>
<posy>180r</posy>
<control type="grouplist">
<description>Media Codec Flagging Images</description>
(...)
</control> <!-- begin js-mod -->
<control type="label"> <description>Bitrate Label</description> <width>80</width> <align>right</align> <label>$INFO[musicplayer.Samplerate,,kHz]$INFO[musicplayer.Bitrate,[CR],kb/s]</label> </control>
<!-- end js-mod -->
</control>
Aktualizowanie sterowników NVIDIA ION w XBMC-10.1/Ubuntu 10.04:
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings
Uciążliwe przełączanie do trybu okienkowego (xbmc jest wyświetlany w lewym górnym rogu) po naciśnięciu klawisza "\" można wyłączyć w pliku
poprzez skomentowanie/usunięcie linijki
<!-- <backslash>ToggleFullScreen</backslash> -->
Rodzaj i typ karty graficznej można sprawdzić poleceniem
lspci
Klient Torrent:
http://1000umbrellas.com/2010/04/21/transmission-install-on-ubuntu-10-04-server-lucid
\usr\share\xbmc\addons\skin.confluence\720p\MusicVisualisation.xml
Początek pliku musi być taki:
<window id="2006">
<defaultcontrol>-</defaultcontrol>
<allowoverlay>no</allowoverlay>
<controls>
<control type="visualisation" id="2">
<description>visualisation</description>
<posx>0</posx>
<posy>0</posy>
<width>1280</width>
<height>720</height>
</control>
<control type="image">
<description>Fanart image</description>
<posx>0</posx>
<posy>0</posy>
<width>1280</width>
<height>720</height>
<texture fallback="special://skin/backgrounds/music.jpg">$INFO[MusicPlayer.Property(Fanart_Image)]</texture>
</control>
Wyświetlanie częstotliwości próbkowania:
<control type="group">
<posx>370</posx>
<posy>180r</posy>
<control type="grouplist">
<description>Media Codec Flagging Images</description>
(...)
</control> <!-- begin js-mod -->
<control type="label"> <description>Bitrate Label</description> <width>80</width> <align>right</align> <label>$INFO[musicplayer.Samplerate,,kHz]$INFO[musicplayer.Bitrate,[CR],kb/s]</label> </control>
<!-- end js-mod -->
</control>
Aktualizowanie sterowników NVIDIA ION w XBMC-10.1/Ubuntu 10.04:
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings
Uciążliwe przełączanie do trybu okienkowego (xbmc jest wyświetlany w lewym górnym rogu) po naciśnięciu klawisza "\" można wyłączyć w pliku
/usr/share/xbmc/system/keymaps/Keymap.xml
poprzez skomentowanie/usunięcie linijki
<!-- <backslash>ToggleFullScreen</backslash> -->
Rodzaj i typ karty graficznej można sprawdzić poleceniem
lspci
Klient Torrent:
http://1000umbrellas.com/2010/04/21/transmission-install-on-ubuntu-10-04-server-lucid
undefined
sobota, 3 grudnia 2011
XBMC - W lewym górnym erkanie
Gdy wciśniesz klawisz "\" podczas używania XBMC to program wyjdzie z trybu full screen i pojawi się w lewym górnym rogu ekranu. Niestety po restarcie będzie pamiętał tą pozycję, ale można to zmienić:
w userdata/advancedsettings.xml
<advancedsettings>
<fullscreen>true</fullscreen>
</advancedsettings>
A najlepiej zmienić konfigurację tego klawisza:
http://kubaszostak.blogspot.com/2011/12/xbmc-dostosowywanie.html
w userdata/advancedsettings.xml
<advancedsettings>
<fullscreen>true</fullscreen>
</advancedsettings>
A najlepiej zmienić konfigurację tego klawisza:
http://kubaszostak.blogspot.com/2011/12/xbmc-dostosowywanie.html
niedziela, 27 listopada 2011
XBMC - Samba
Logujemy się do terminala (ALT + CTRL + F1) i wpisujemy :
sudo apt-get install samba
Po zainstalowaniu samby edytujemy plik konfiguracyjny:
sudo nano /etc/samba/smb.conf
workgroup = GRUPA_ROBOCZA
browseable = yes
local master = yes
domain master = yes
security = share
Potem trzeba utworzyć sekcję udostępnianego udziału
[public]
path = /public
browseable = yes
guest ok = yes
read only = no
create mask = 0755
sudo apt-get install samba
Po zainstalowaniu samby edytujemy plik konfiguracyjny:
sudo nano /etc/samba/smb.conf
W sekcji [global] należy przeedytować zmienne
workgroup = GRUPA_ROBOCZA
browseable = yes
local master = yes
domain master = yes
security = share
Potem trzeba utworzyć sekcję udostępnianego udziału
[public]
path = /public
browseable = yes
guest ok = yes
read only = no
create mask = 0755
Trzeba też utworzyć udostępniany folder
sudo mkdir -p /public
sudo chown nobody.nogroup /public
i zrestartować sambę
service smbd restart
service nmbd restart
Na koniec można sprawdzić parametry konfiguracji samby:
sudo testparm
Teraz można się zalogować z komputera połączonego w sieci wpisując adres \\XBMCLive
Można też dodać dostęp do całego dysku
[hdd]
path = /
writeable = yes
read only = no
create mode = 0755
directory mode = 0755
force user = xbmc
guest ok = yes
Można też uzyskać dostęp do całego dysku za pomocą filleZilla. Najpierw w terminalu ustal hasło dla root:
sudo passwd root
Potem uruchom FileZilla i podaj parametry
Host: sftp://xxx.xxx.xxx.xxx (lub xbmcLive)
Port: 22
Username: root
Password: twojeTajneHasło
sudo mkdir -p /public
sudo chown nobody.nogroup /public
i zrestartować sambę
service smbd restart
service nmbd restart
Na koniec można sprawdzić parametry konfiguracji samby:
sudo testparm
Teraz można się zalogować z komputera połączonego w sieci wpisując adres \\XBMCLive
Można też dodać dostęp do całego dysku
[hdd]
path = /
writeable = yes
read only = no
create mode = 0755
directory mode = 0755
force user = xbmc
guest ok = yes
Można też uzyskać dostęp do całego dysku za pomocą filleZilla. Najpierw w terminalu ustal hasło dla root:
sudo passwd root
Potem uruchom FileZilla i podaj parametry
Host: sftp://xxx.xxx.xxx.xxx (lub xbmcLive)
Port: 22
Username: root
Password: twojeTajneHasło
sobota, 26 listopada 2011
XBMC - SSH
Jeżeli chcesz mieć możliwość administracji zdalnym komputerem na którym postawiony jest XBMC Live / Ubuntu to musisz zapewnić sobie dostęp do terminala:
Przełaczasz się na komputerze z XBMC do terminala CTRL + ALT + F1 i wpisujesz:
sudo apt-get install ssh
Teraz możesz się łączyć z tym komputerem za pośrednictwem dowolnego klienta SSH, np. PuTTy lub innym
Przełaczasz się na komputerze z XBMC do terminala CTRL + ALT + F1 i wpisujesz:
sudo apt-get install ssh
Teraz możesz się łączyć z tym komputerem za pośrednictwem dowolnego klienta SSH, np. PuTTy lub innym
undefined
piątek, 25 listopada 2011
Konfiguracja XBMC - WiFi
XBMC to doskonały Media Center. Gdy kożystasz z prekonfigurowanej edycji XBMC Live opartej na dystrybucji Ubuntu musisz jeszcze skonfigurować pewne elementy systemu.
Sieć bezprzewodowa WIFI
Najperw trzeba zainstalować odpowiednie biblioteki. W tym celu przechodzimy do konsoli (CTRL+ALT+F1) i wpsiujemy:
# sudo apt-get install wireless-tools
lub
# sudo apt-get install wpasupplicant
Potem konfigurujemy sieć. W tym celu użyjemy edytora nano:
# sudo nano /etc/network/interfaces
Na końcu pliku należy dopisać następujące linijki
auto wlan0
iface wlan0 inet dhcp
wpa-ssid NAZWA_SIECI_WIFI
wpa-psk HASŁO
Żeby zapisać plik klikamy CTRL+X, Y, ENTER. Restartujemy usługi:
# /etc/init.d/networking restart
lub
# service networking restart
Na koniec możemy sprawdzić jak działa nasze WiFi
# iwconfig wlan0
http://wiki.xbmc.org/index.php?title=HOW-TO:Play_internet_video_and_audio_streams
Sieć bezprzewodowa WIFI
Najperw trzeba zainstalować odpowiednie biblioteki. W tym celu przechodzimy do konsoli (CTRL+ALT+F1) i wpsiujemy:
# sudo apt-get install wireless-tools
lub
# sudo apt-get install wpasupplicant
Potem konfigurujemy sieć. W tym celu użyjemy edytora nano:
# sudo nano /etc/network/interfaces
Na końcu pliku należy dopisać następujące linijki
auto wlan0
iface wlan0 inet dhcp
wpa-ssid NAZWA_SIECI_WIFI
wpa-psk HASŁO
Żeby zapisać plik klikamy CTRL+X, Y, ENTER. Restartujemy usługi:
# /etc/init.d/networking restart
lub
# service networking restart
Na koniec możemy sprawdzić jak działa nasze WiFi
# iwconfig wlan0
http://wiki.xbmc.org/index.php?title=HOW-TO:Play_internet_video_and_audio_streams
poniedziałek, 14 listopada 2011
sobota, 15 października 2011
czwartek, 13 października 2011
Jak dodać w ArcGIS dwa rastry o różnych zakresach (extent)
Gdy dodajesz dwa rastry o różnym zakresie to raster wynikowy jest domyślnie przycinany do tego takiego rastra, który zawiera zakresy wszystkich rastrów.
Jednak najczęściej zależy nam aby to było połączenie dwóch rastrów nawet w tych miejscach gdy jeden z nich nie ma wartości (NoData/NULL)
Żeby to osiągnąć trzeba ustawić zmienną Processing Extent -> Extent -> Union of Inputs w Enviroment Settings.
Gdy do tego użyjesz Raster Calculator z odpowiednimi formułami, np.
Con(IsNull("nmt1"), 0.0, "nmt1") + Con(IsNull("nmt2"), 0.0, "nmt2")
to na pewno wszystko zadziała tak jak powinno.
Jednak najczęściej zależy nam aby to było połączenie dwóch rastrów nawet w tych miejscach gdy jeden z nich nie ma wartości (NoData/NULL)
Żeby to osiągnąć trzeba ustawić zmienną Processing Extent -> Extent -> Union of Inputs w Enviroment Settings.
Gdy do tego użyjesz Raster Calculator z odpowiednimi formułami, np.
Con(IsNull("nmt1"), 0.0, "nmt1") + Con(IsNull("nmt2"), 0.0, "nmt2")
to na pewno wszystko zadziała tak jak powinno.
poniedziałek, 10 października 2011
Jak ustawić wartość NULL w ArcGIS za pomocą Raster Calculator
Aby ustawić wartość NULL (NoValue) dla komórek o zadanej wartości wystarczy w ArcGIS Raster Calculator wpisać odpowiednią formułę, np.:
Jeżeli natomiast chcemy dla wszyskich komórek o wartości NoValue przypisać jakąś wartość np. 0 to należy wpisać formułę
Con(IsNull("nmt"), 0.0, "nmt")
undefined
niedziela, 25 września 2011
środa, 31 sierpnia 2011
wtorek, 9 sierpnia 2011
Jak dodać własny link do wyników wyszukiwania w Geoportalu Esri
Domyślnie Esri Geoportal Server wyświetla standadowe linki na liście wyszukiwania. Geoportal sam próbuje się domyślać jaki jest cel danego linku (czy po kliknięciu ma się wyświetlić mapa z podglądem, czy okno pobierania danych) ale nie zawsze mu to wychodzi. Standardowe linki można w prosty sposób wyłączyć. W tym celu w pliku geoportal\WEB-INF\classes\gpt\search\profiles\CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt należy dodać sekcję :
W naszym przypadku ścieżka dostępu do danych wygląda tak:
/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
Tak się składa, że takich wartości w jednym pliku metadanych może być więcej, np. inne dla wartości
<gmd:CI_OnLineFunctionCode>information</gmd:CI_OnLineFunctionCode>
<gmd:CI_OnLineFunctionCode>download</gmd:CI_OnLineFunctionCode>
itd.
Gdy zostaną ustalone elementy, które mają być zindeksowane trzeba dodać element <property> do pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml, oraz ustawić nazwę elementu i ścieżkę dostępu. W naszym przykładzie zostały dodane następujące linie:
Czyli zostało ustawione, że np. property o nazwie distribution.information.url wskazuje na odpowiedni zapis w pliku metadanych.
Żeby nowe wartości zostały prawidłowo zaindeksowane trzeba:
property-meanings.xml
Następnie trzeba dodać elementy <property-meaning> do pliku geoportal\WEB-INF\classes\gpt\metadata\property-meanings.xml. Trzeba poprzednio przypisane nazwy elementów przypisać do odpowiednich elementów <dc>, w naszym przykładzi został po prostu dodany przedrostek "dc:" :
CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt
Teraz wracamy do pliku CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt i dodajemy kolejne elementy <Link>. W naszym przykładzie dodamy:
<Link label="catalog.mdCode.onLineFunctionCode.offlineAccess">
<xsl:value-of select="dc:distribution.offline.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.download">
<xsl:value-of select="dc:distribution.download.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.order">
<xsl:value-of select="dc:distribution.order.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.search">
<xsl:value-of select="dc:distribution.search.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.information">
<xsl:value-of select="dc:distribution.information.url"/>
</Link >
dc:distribution.offline.url to poprzednio zdefiniowana wartość w pliku property-meanings.xml. Wartość catalog.mdCode.onLineFunctionCode.offlineAccess to wyświetlana etykieta linku zdefiniowana w pliku geoportal\WEB-INF\classes\gpt\resources\gpt.properties.
Wynik tych działań wyglądać może tak:
...
</Types>
<Links>
<Link gptLinkTag="addToMap" show="false"/>
<Link gptLinkTag="preview" show="false"/>
<Link gptLinkTag="open" show="false"/>
</Links>
</Record>
Trudniej sprawa wygląda gdy chcemy dodać własne linki. Sporo informacji na ten temat można zlaleźć na stronach wsparcia Esri. Zobacz w jaki sposób można to zrobić dla metadanych o profilu inspire.
indexables.xml
Najpierw w pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml należy dodać indeksowanie interesujących nas danych. W tym celu należy dodać elementy , które wskazują nazwę indeksowanych wartości oraz ich ścieżkę dostępu w pliku metadanych. Ścieżkę najlepiej wyszukać bezpośrednio w Geoportalu
Edytowanie wartości w pliku metadanych |
Otwieranie pliku metadanych |
Wyszukiwanie ścieżki dostępu do wartości |
W naszym przypadku ścieżka dostępu do danych wygląda tak:
/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL
Tak się składa, że takich wartości w jednym pliku metadanych może być więcej, np. inne dla wartości
<gmd:CI_OnLineFunctionCode>information</gmd:CI_OnLineFunctionCode>
<gmd:CI_OnLineFunctionCode>download</gmd:CI_OnLineFunctionCode>
itd.
Gdy zostaną ustalone elementy, które mają być zindeksowane trzeba dodać element <property> do pliku geoportal\WEB-INF\classes\gpt\metadata\iso\inspire\inspire-apiso-indexables.xml, oraz ustawić nazwę elementu i ścieżkę dostępu. W naszym przykładzie zostały dodane następujące linie:
<property meaning="apiso:distribution" xpath="/gmd:MD_Metadata/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource">
<property meaning="distribution.information.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='information']"/>
<property meaning="distribution.search.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='search']"/>
<property meaning="distribution.order.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='order']"/>
<property meaning="distribution.download.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='download']"/>
<property meaning="distribution.offline.url" xpath="gmd:linkage/gmd:URL[../../gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='offlineAccess']"/>
</property>
Czyli zostało ustawione, że np. property o nazwie distribution.information.url wskazuje na odpowiedni zapis w pliku metadanych.
Żeby nowe wartości zostały prawidłowo zaindeksowane trzeba:
- Zapisać plik inspire-apiso-indexables.xml
- Zatrzymać serwer
- Usunąć pliki z folderu lucene (czytaj więcej)
- Uruchomić serwer
- Zalogować się do Geoportalu
- Zaaprobować wszystkie pliki metadanych w panelu administracyjnym Geoportalu - to spowoduję ponowną indeksację wszystkich wartości
property-meanings.xml
Następnie trzeba dodać elementy <property-meaning> do pliku geoportal\WEB-INF\classes\gpt\metadata\property-meanings.xml. Trzeba poprzednio przypisane nazwy elementów przypisać do odpowiednich elementów <dc>, w naszym przykładzi został po prostu dodany przedrostek "dc:" :
<property-meaning name="distribution.information.url" valueType="String" comparisonType="value">Trzeba również dodać element <meaning-names> w sekcji <propertySets>:
<dc name="dc:distribution.information.url"/>
</property-meaning>
<property-meaning name="distribution.search.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.search.url"/>
</property-meaning>
<property-meaning name="distribution.order.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.order.url"/>
</property-meaning>
<property-meaning name="distribution.download.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.download.url"/>
</property-meaning>
<property-meaning name="distribution.offline.url" valueType="String" comparisonType="value">
<dc name="dc:distribution.offline.url"/>
</property-meaning>
<propertySets>
...
<full>
<dc>
...
<meaning-names>resource.url,website.url,thumbnail.url,xml.url</meaning-names>
<meaning-names>distribution.order.url,distribution.download.url,distribution.information.url,distribution.offline.url,distribution.search.url</meaning-names>
</dc>
</full>
</propertySets>
CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt
Teraz wracamy do pliku CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt i dodajemy kolejne elementy <Link>. W naszym przykładzie dodamy:
<Link label="catalog.mdCode.onLineFunctionCode.offlineAccess">
<xsl:value-of select="dc:distribution.offline.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.download">
<xsl:value-of select="dc:distribution.download.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.order">
<xsl:value-of select="dc:distribution.order.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.search">
<xsl:value-of select="dc:distribution.search.url"/>
</Link >
<Link label="catalog.mdCode.onLineFunctionCode.information">
<xsl:value-of select="dc:distribution.information.url"/>
</Link >
dc:distribution.offline.url to poprzednio zdefiniowana wartość w pliku property-meanings.xml. Wartość catalog.mdCode.onLineFunctionCode.offlineAccess to wyświetlana etykieta linku zdefiniowana w pliku geoportal\WEB-INF\classes\gpt\resources\gpt.properties.
Wynik tych działań wyglądać może tak:
poniedziałek, 1 sierpnia 2011
poniedziałek, 18 lipca 2011
czwartek, 30 czerwca 2011
Projekty rozporządzeń do ustwy o IIP
MSWiA Opublikowało projekty rozporządzeń:
- Projekt rozporządzenia MSWiA w sprawie bazy danych obiektów topograficznych oraz bazy danych ogólnogeograficznych, a także standardowych opracowań kartograficznych;
[bip.mswia.gov.pl]
- Projekt rozporządzenia MSWiA w sprawie baz danych zobrazowań lotniczych i satelitarnych oraz ortofotomapy i numerycznego modelu terenu
[bip.mswia.gov.pl]
- Projekt rozporządzenia Rady Ministrów w sprawie państwowego rejestru granic i powierzchni jednostek podziałów terytorialnych kraju
[bip.mswia.gov.pl]
- Projekt rozporządzenia MSWiA w sprawie standardów technicznych wykonywania geodezyjnych pomiarów sytuacyjnych i wysokościowych oraz opracowywania i przekazywania wyników tych pomiarów do państwowego zasobu geodezyjnego
[bip.mswia.gov.pl]
Więcej informacji:
[www.gisplay.pl]
- Projekt rozporządzenia MSWiA w sprawie bazy danych obiektów topograficznych oraz bazy danych ogólnogeograficznych, a także standardowych opracowań kartograficznych;
[bip.mswia.gov.pl]
- Projekt rozporządzenia MSWiA w sprawie baz danych zobrazowań lotniczych i satelitarnych oraz ortofotomapy i numerycznego modelu terenu
[bip.mswia.gov.pl]
- Projekt rozporządzenia Rady Ministrów w sprawie państwowego rejestru granic i powierzchni jednostek podziałów terytorialnych kraju
[bip.mswia.gov.pl]
- Projekt rozporządzenia MSWiA w sprawie standardów technicznych wykonywania geodezyjnych pomiarów sytuacyjnych i wysokościowych oraz opracowywania i przekazywania wyników tych pomiarów do państwowego zasobu geodezyjnego
[bip.mswia.gov.pl]
Więcej informacji:
[www.gisplay.pl]
poniedziałek, 27 czerwca 2011
Model grawitacji ziemii
Pięknie widać, że to co jest poziome nie jest płaskie :)
http://www.esa.int/esaCP/SEM1AK6UPLG_index_0.html
Do events
http://www.codeproject.com/KB/cs/DispatcherFrame.aspx
Dont block Your UI
http://www.codeproject.com/KB/ WPF/WpfNonblockingUI.aspx
Design Patterns
http://www.devlake.com/
Dont block Your UI
http://www.codeproject.com/KB/
Design Patterns
http://www.devlake.com/
Custom error tracking
http://www.codeproject.com/Articles/52443/Custom-error-tracking-library-in-asp-net-using-XML.aspx
piątek, 24 czerwca 2011
wtorek, 21 czerwca 2011
Przeliczanie wysokości pomiędzy zerem amsterdamskim oraz zerem kronsztadzkim
§ 17. 1. Poziom zerowy morza (Pz) odpowiada zeru amsterdamskiemu (Amst) wodowskazu, położonemu o 16,2 cm wyżej od poziomu średniego Morza Północnego, wyznaczonemu na podstawie obserwacji przeprowadzonych od 1701 do 1871 r. na stacji mareograficznej w Amsterdamie.2. Poziom zerowy morza (Pz), o którym mowa w ust. 1, podaje się w geodezyjnym systemie odniesienia NN55 (Normal Null) odpowiadającym zeru głównego reperu wyjściowego dla obszaru Polski, umieszczonemu na Ratuszu Miejskim w Toruniu i wyznaczonemu na podstawie wyników niwelacji precyzyjnej przeprowadzonej w latach 1955-1957.3. Poziom zerowy morza (Pz) odniesiony do wodowskazu w porcie morskim Kronsztadt oznacza się jako zero kronsztadzkie (Kron).4. Do przeliczania wysokości pomiędzy zerem amsterdamskim (HAmst.) oraz zerem kronsztadzkim (HKron.) stosuje się, wyrażoną w metrach, zależność:
HKron. = HAmst. + 0,08
5. W projekcie budowlanym należy każdorazowo zestawiać podstawowe charakterystyczne poziomy morza, o których mowa w § 14, oraz poziom zerowy morza (Pz), o którym mowa w ust. 1 i ust. 3, do którego odniesiono i oznaczono rzędne konstrukcji budowli morskiej.
niedziela, 19 czerwca 2011
sobota, 18 czerwca 2011
środa, 15 czerwca 2011
Tłumaczenie polskiej wersji gpt.properties - native2ascii
Żeby utworzyć polską wersję zasobów dla Esri Geoportal Server należy skopiować plik gpt.properties z katalogu \\webapps\geoportal\WEB-INF\classes\gpt\resources\ i nadać mu nazwę gpt_pl.properties. Przeglądarka automatycznie wybierze język dla "polskich przeglądarek". Występuje jednak problem konwersji polskich czcionek. Można go rozwiązać w następujący sposób:
1. Tworzymy plik gpt_pl-utf.properties, który edytowany np. Programmers Notepad jest zapisywany jako UTF-8.
2. Tworzymy plik native2ascii.bat, w którym wpisujemy
"C:\Program Files\Java\jdk1.6.0_24\bin\native2ascii.exe" -encoding UTF-8 gpt_pl-utf.properties gpt_pl.properties
pause
3. Klikamy native2ascii.bat i dostajemy prawidłowo sformatowany plik zasobów.
---
http://help.arcgis.com/en/geoportal_extension/10.0/help/index.html#//00t000000015000000.htm
1. Tworzymy plik gpt_pl-utf.properties, który edytowany np. Programmers Notepad jest zapisywany jako UTF-8.
2. Tworzymy plik native2ascii.bat, w którym wpisujemy
"C:\Program Files\Java\jdk1.6.0_24\bin\native2ascii.exe" -encoding UTF-8 gpt_pl-utf.properties gpt_pl.properties
pause
3. Klikamy native2ascii.bat i dostajemy prawidłowo sformatowany plik zasobów.
---
http://help.arcgis.com/en/geoportal_extension/10.0/help/index.html#//00t000000015000000.htm
piątek, 10 czerwca 2011
Narzędzia dla ArcGIS
ArcGIS for AutoCAD
http://www.esri.com/software/arcgis/arcgis-for-autocad/demos.html
Geodatabase Toolset (GDBT)
http://www.esri.com/software/arcgis/extensions/gdbt/demo.html
Eksport jednej warstwy do wielu na podstawie atrybutów
http://www.goldenline.pl/forum/2408217/eksport-jednej-warstwy-do-wielu-na-podstawie-atrybutow
http://www.esri.com/software/arcgis/arcgis-for-autocad/demos.html
Geodatabase Toolset (GDBT)
http://www.esri.com/software/arcgis/extensions/gdbt/demo.html
Eksport jednej warstwy do wielu na podstawie atrybutów
http://www.goldenline.pl/forum/2408217/eksport-jednej-warstwy-do-wielu-na-podstawie-atrybutow
czwartek, 9 czerwca 2011
Przelcizanie współrzędnych GPS w formacie LQQ, GGA
Zadzwonił kolega męża koleżanki z pytaniem, czy nie wiem jak przeliczyć współrzędne elipsoidalne GPS do lokalnego układu współrzędnych płaskich. Trochę czasu upłynęło zanim wyjaśniliśmy sobie co rozumiemy przez układ globalny, lokalny, czym się różnią współrzędne elipsoidalne XYZ od płaskich XY. W końcu zaproponowałem takie rozwiązanie:
1. Przeliczenie współrzędnych elipsoidalnych
do dowolnego układu współrzędnych płaskich. Zaproponowałem odwzorowanie Merkatora z punktem przyłożenia w pobliżu obszaru opracowania. Najpiew trzeba odczytać współrzędne geograficzne z formatu GGA- Global Positioning System Fix Data. Opis tego formatu wygląda tak:
2. Obliczenie współrzędnych LQQ
Gdy już mamy współrzędne przeliczone do Lokalnego Układu Merkatora (LUM) to dalej sprawa wygląda prosto. Trzeba pomierzyć kilka punktów wspólnych w systemie wykorzystującym GGA oraz drugi raz te same punkty w systemie wykorzystującym LQQ (Leica Local Position and Quality). Gdy mamy do dyspozycji zestaw współrzędnych w dwóch układach obliczamy parametry transformacji Helmerta z jednego do drugiego - proste!
---
http://uriasz.am.szczecin.pl/naw_bezp/transformacja.html
1. Przeliczenie współrzędnych elipsoidalnych
do dowolnego układu współrzędnych płaskich. Zaproponowałem odwzorowanie Merkatora z punktem przyłożenia w pobliżu obszaru opracowania. Najpiew trzeba odczytać współrzędne geograficzne z formatu GGA- Global Positioning System Fix Data. Opis tego formatu wygląda tak:
GGA - essential fix data which provide 3D location and accuracy data.Najważniejsza informacja dotyczy oczywiście sekcji w której jest zapisana długość i szerokość elipsoidalna. Gdy już wiadomo jak je odczytać to algorytm obliczania współrzędnych płaskich wygląda tak:
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
Where:
GGA Global Positioning System Fix Data
123519 Fix taken at 12:35:19 UTC
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
1 Fix quality: 0 = invalid
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = estimated (dead reckoning) (2.3 feature)
7 = Manual input mode
8 = Simulation mode
08 Number of satellites being tracked
0.9 Horizontal dilution of position
545.4,M Altitude, Meters, above mean sea level
46.9,M Height of geoid (mean sea level) above WGS84
ellipsoid
(empty field) time in seconds since last DGPS update
(empty field) DGPS station ID number
*47 the checksum data, always begins with *
const double PI = 3.14159265358979323846264; //const double R0 = 6367449.1458234154; // Elipsoida WGS-84
const double R0 = 6364566.797; // Kombinowane WGS-84->Krasowski
// W pobliĹźu obszaru opracowania,
//tak aby poprawki odzorowawcze były jak najmniejsze
const double LOrigin = 19.51 * PI / 180.0;
const double BOrigin = 53.60; public void GetMercatorNE(double GpsB, double GpsL, out double North, out double Eeast) { double DeltaL = GpsL - LOrigin; // 1. Lagrange
double fi = LagrangeCorr(GpsB); // 2. Mercator
double nMerc; double eMerc; double p = Math.Sin(fi); double q = Math.Cos(fi) * Math.Cos(DeltaL); nMerc = Math.Atan(p / q) * R0; double r = 1.0 + Math.Cos(fi) * Math.Sin(DeltaL); double s = 1.0 - Math.Cos(fi) * Math.Sin(DeltaL); eMerc = 0.5 * Math.Log(r / s) * R0; // Minus dowolna wartość, tak aby współrzędne były bliżej zera
North = nMerc - 5930000;
Eeast = eMerc; } private double LagrangeCorr(double B) { double e = 0.081819190842621486; // Elipsoida WGS-84
double U = 1 - e * Math.Sin(B); double V = 1 + e * Math.Sin(B); double K = Math.Pow(U / V, e / 2); double C = K * Math.Tan(B / 2 + PI / 4.0); double fi = 2 * Math.Atan(C) - PI / 2.0; return fi; }
2. Obliczenie współrzędnych LQQ
Gdy już mamy współrzędne przeliczone do Lokalnego Układu Merkatora (LUM) to dalej sprawa wygląda prosto. Trzeba pomierzyć kilka punktów wspólnych w systemie wykorzystującym GGA oraz drugi raz te same punkty w systemie wykorzystującym LQQ (Leica Local Position and Quality). Gdy mamy do dyspozycji zestaw współrzędnych w dwóch układach obliczamy parametry transformacji Helmerta z jednego do drugiego - proste!
---
http://uriasz.am.szczecin.pl/naw_bezp/transformacja.html
Archiwalne mapy wybrzeża morskiego
Tworzeniem i udostępnianiem map obszarów morskich zajmuje się Biuro Hydrograficzne Marynarki Polskiej. Jednak w sieci można znaleźć wiele ciekawych map. Np. na stronie http://www.mapy.eksploracja.pl/viewpage.php?page_id=31 można znaleźć mapy Gdańska z XVIII i IXX wieku. Dla mnie ciekawe było zobaczyć mapę Gdyni bez portu. Przeglądając zasoby witryny mapy.eksploracja.pl można znaleźć jeszcze wiele innych ciekawych map.
Warto też odwiedzić stronę gis.gdansk.pl, gdzie można również znaleźć wiele archiwalnych map gdańska.
Warto też odwiedzić stronę gis.gdansk.pl, gdzie można również znaleźć wiele archiwalnych map gdańska.
poniedziałek, 6 czerwca 2011
Rozgraniczenie w trybie ustawy Prawo Wodne -VS- Rozgraniczenie w trybie ustawy Prawo Geodezyjne i Kartograficzne
Rozgraniczenie, które znamy doskonale to rozgraniczenie w trybie PGiK. Zasady są jasne:
Ustalenie linii brzegu powoduje zmiany dwojakiego rodzaju: albo woda zabiera grunt, albo grunt zabiera wodę.
Woda zabiera grunt
Czyli mamy do czynienia z sytuacją gdzie wiemy, że woda zajęła grunt. Żeby to wiedzieć przebieg granic nieruchomości musi być ustalony wcześniej. I dopiero gdy ustalimy przebieg granic (np. w drodze rozgraniczenia w trybie PGiK) to wtedy można sporządzić projekt rozgraniczenia gruntów pokrytych wodami od gruntów przyległych, który służy do ustalenia przebiegu linii brzegu a nie przebiegu granic - to jest zupełnie inne rozgraniczenie niż wtrybie PGiK.
Na dodatek jest mowa o odszkodowaniu. Rozgraniczenie w trybie PGiK ustaliłoby nowy przebieg granic, zmieniłoby powierzchnie nieruchomości i trudno było by w tym przypadku mówić o odszkodowaniu. Jeżeli chcemy myśleć o odszkodowaniu to trzeba najpierw wydzielić nieruchomość, za która należy się odszkodowanie, sporządzić wykaz zmian gruntowych, z którego będzie wynikać za jakie użytki i jaką powierzchnię należy się odszkodowanie.
Grunt zabiera wodę
---
Co zatem należy zrobić? Na pewno trzeba zrobić projekt rozgraniczenia gruntów pokrytych wodami od gruntów przyległych. Projekt ten stanowi podstawę do wydania decyzji o ustaleniu linii brzegu. Do tego momentu nie powinno być problemów interpretacyjnych. Jednak decyzja o ustaleniu linii brzegu wprowadza szereg zmian, dotyczących np. ewidencji gruntów i budynków. To jak wprowadzić zmiany wynikające z decyzji o ustaleniu linii brzegu do ewidencji gruntów to już temat na kolejny artykuł.
PGiK, Art. 31. 2. Przy ustalaniu przebiegu granic bierze się pod uwagę znaki i ślady graniczne, mapy i inne dokumenty oraz punkty osnowy geodezyjnej.Wynika z tego, że z rozgraniczeniem w trybie PGiK mamy do czynienia tylko i wyłącznie wtedy gdy brak jest dokumentów, które pozwolą na określenie granic. Tymczasem w rozgraniczeniu w trybie Prawa Wodnego mamy do czynienia z ustaleniem przebiegu nowej linii brzegu niezależnie od tego, że istnieją doskonałe dokumenty, które pozwalają na w 100% jednoznaczne określenie granic.
3. Jeżeli jest brak danych, o których mowa w ust. 2 (...), ustala się przebieg granicy na podstawie zgodnego oświadczenia stron (...)
4. W razie sporu co do przebiegu linii granicznych, geodeta nakłania strony do zawarcia ugody (...)
PGiK, Art. 34. 1. Jeżeli w razie sporu co do przebiegu linii granicznych nie dojdzie do zawarcia ugody (...), upoważniony geodeta (...) całość dokumentacji przekazuje właściwemu wójtowi (...).
2. Organ, o którym mowa w ust. 1, umarza postępowanie administracyjne i przekazuje sprawę z urzędu do rozpatrzenia sądowi.
PW, Art.15.3. Podstawę ustalenia linii brzegu stanowi dostarczony przez wnioskodawcęprojekt rozgraniczenia gruntów pokrytych wodami od gruntów przyległychZ tego artykułu wynika, że rozgraniczenie w trybie Prawa Wodnego służy do ustalenia linii brzegu, a nie do ustalenia granic. Decyzja, która ustali przebieg linii brzegu ma swoje konsekwencje, wprowadza pewne zmiany, które powinny być wprowadzone do ewidencji gruntów i budynków. Zmiany te dotyczą również praw własności - a jak wiemy rozgraniczenie nie służy do wprowadzania zmian praw własności, rozgraniczenie służy tylko i wyłącznie do ustalenia przebiegu istniejących granic.
Ustalenie linii brzegu powoduje zmiany dwojakiego rodzaju: albo woda zabiera grunt, albo grunt zabiera wodę.
Woda zabiera grunt
PW, Art. 17. 1. Jeżeli śródlądowa woda powierzchniowa płynąca lub wody morza terytorialnego albo morskie wody wewnętrzne zajmą trwale, w sposób naturalny, grunt niestanowiący własności właściciela wody, grunt ten staje się własnością właściciela wody.
2. W przypadku, o którym mowa w ust. 1, dotychczasowemu właścicielowi gruntu przysługuje odszkodowanie od właściciela wody na warunkach określonych w ustawie.
Czyli mamy do czynienia z sytuacją gdzie wiemy, że woda zajęła grunt. Żeby to wiedzieć przebieg granic nieruchomości musi być ustalony wcześniej. I dopiero gdy ustalimy przebieg granic (np. w drodze rozgraniczenia w trybie PGiK) to wtedy można sporządzić projekt rozgraniczenia gruntów pokrytych wodami od gruntów przyległych, który służy do ustalenia przebiegu linii brzegu a nie przebiegu granic - to jest zupełnie inne rozgraniczenie niż wtrybie PGiK.
Na dodatek jest mowa o odszkodowaniu. Rozgraniczenie w trybie PGiK ustaliłoby nowy przebieg granic, zmieniłoby powierzchnie nieruchomości i trudno było by w tym przypadku mówić o odszkodowaniu. Jeżeli chcemy myśleć o odszkodowaniu to trzeba najpierw wydzielić nieruchomość, za która należy się odszkodowanie, sporządzić wykaz zmian gruntowych, z którego będzie wynikać za jakie użytki i jaką powierzchnię należy się odszkodowanie.
Grunt zabiera wodę
PW, Art. 15a. 1. Rozgraniczenia gruntów, które były pokryte wodami przed wykonaniem urządzenia wodnego, od pozostałych gruntów dokonuje, na wniosek właściciela wody lub właściciela gruntu sąsiadującego, w drodze decyzji, właściwy starosta realizujący zadanie z zakresu administracji rządowej.Hmm, a więc nie jest to rozgraniczenie w trybie PGiK, którego dokonuje Wójt/Burmistrz/Prezydent. Na dodatek
PW, Art. 19. 1. Starorzecza oraz grunt powstały w wyniku wykonania budowli regulacyjnychGdyby zrobić rozgraniczenie w trybie PGiK to grunt nie mógłby pozostać własnością dotychczasowego właściciela wody/Skarbu Państwa. Rozgraniczenie zgodne z PGiK sprawiłoby, że grunt pokryty dotychczas wodą stałby się własnością sąsiada wody - życzę dużo szczęścia każdemu, kto podpisze decyzję przekazującą osobie prywatnej grunty Skarbu Państwa. Dla przykładu samo użytkowanie gruntów pokrytych wodami morskimi wiąże się z decyzją ministra i bardzo wysokimi opłatami.
pozostają własnością dotychczasowego właściciela wody.
2. Grunt powstały na skutek trwałego, naturalnego lub sztucznego odkładu na obszarach
wód morza terytorialnego lub morskich wód wewnętrznych pozostaje własnością Skarbu Państwa.
---
Co zatem należy zrobić? Na pewno trzeba zrobić projekt rozgraniczenia gruntów pokrytych wodami od gruntów przyległych. Projekt ten stanowi podstawę do wydania decyzji o ustaleniu linii brzegu. Do tego momentu nie powinno być problemów interpretacyjnych. Jednak decyzja o ustaleniu linii brzegu wprowadza szereg zmian, dotyczących np. ewidencji gruntów i budynków. To jak wprowadzić zmiany wynikające z decyzji o ustaleniu linii brzegu do ewidencji gruntów to już temat na kolejny artykuł.
niedziela, 5 czerwca 2011
Kto jest właścicielem gruntów pokrytych wodami morskimi?
Prawo Wodne:
Art. 11. 1. Prawa właścicielskie w stosunku do wód publicznych stanowiących
własność Skarbu Państwa, z zastrzeżeniem art. 13, wykonują:
1) minister właściwy do spraw gospodarki morskiej - w stosunku do wód morza
terytorialnego oraz morskich wód wewnętrznych wraz z wodami Zatoki Gdańskiej,
Art. 14. 3. Gospodarowanie gruntami stanowiącymi własność Skarbu Państwa (...), wykonują, w imieniu i na rzecz Skarbu Państwa, odpowiednio organy, o których mowa w art. 11 ust. 1.
Art. 217. 1. Z dniem wejścia w życie ustawy stanowiące własność Skarbu Państwa wody oraz grunty pokryte tymi wodami przechodzą w trwały zarząd odpowiednio - urzędów morskich, regionalnych zarządów gospodarki wodnej, parków narodowych, stosownie do art. 11 ust. 1 pkt 1-3.
2. Przejście mienia, o którym mowa w ust. 1, stwierdza, na wniosek zainteresowanego, właściwy starosta wykonujący zadanie z zakresu administracji rządowej.
3. Przepisy ust. 1 i 2 nie dotyczą mienia, w stosunku do którego zostało ustanowione prawo użytkowania wieczystego.
Art. 11. 1. Prawa właścicielskie w stosunku do wód publicznych stanowiących
własność Skarbu Państwa, z zastrzeżeniem art. 13, wykonują:
1) minister właściwy do spraw gospodarki morskiej - w stosunku do wód morza
terytorialnego oraz morskich wód wewnętrznych wraz z wodami Zatoki Gdańskiej,
Art. 14. 3. Gospodarowanie gruntami stanowiącymi własność Skarbu Państwa (...), wykonują, w imieniu i na rzecz Skarbu Państwa, odpowiednio organy, o których mowa w art. 11 ust. 1.
Art. 217. 1. Z dniem wejścia w życie ustawy stanowiące własność Skarbu Państwa wody oraz grunty pokryte tymi wodami przechodzą w trwały zarząd odpowiednio - urzędów morskich, regionalnych zarządów gospodarki wodnej, parków narodowych, stosownie do art. 11 ust. 1 pkt 1-3.
2. Przejście mienia, o którym mowa w ust. 1, stwierdza, na wniosek zainteresowanego, właściwy starosta wykonujący zadanie z zakresu administracji rządowej.
3. Przepisy ust. 1 i 2 nie dotyczą mienia, w stosunku do którego zostało ustanowione prawo użytkowania wieczystego.
piątek, 3 czerwca 2011
Które decyzje są uzgadniane z Dyrektorem Urzędu Morskiego?
Ustawa o obszarach morskich Rzeczpospolitej Polskiej i administracji morskiej
Art. 37. 3. Pozwolenia wodnoprawne, decyzje o warunkach zabudowy i zagospodarowania terenu, decyzje o pozwoleniu na budowę oraz decyzje w sprawie zmian w zalesianiu, zadrzewianiu, tworzeniu obwodów łowieckich, a także projekty studium uwarunkowań i kierunków zagospodarowania przestrzennego gminy, miejscowych planów zagospodarowania przestrzennego i planów zagospodarowania przestrzennego województwa, dotyczące pasa technicznego, pasa ochronnego oraz morskich portów i przystani, wymagają uzgodnienia z dyrektorem właściwego urzędu morskiego.
4. Wszystkie plany i projekty związane z zagospodarowaniem morskich wód wewnętrznych i morza terytorialnego są zatwierdzane przez organy administracji morskiej w uzgodnieniu z właściwymi gminami nadmorskimi.
Art. 42. 2. W szczególności do organów administracji morskiej należą sprawy:
10) uzgadnianie decyzji w sprawie wydawania pozwoleń wodnoprawnych i pozwoleń budowlanych na obszarze pasa technicznego, morskich portów i przystani, morskich wód wewnętrznych i morza terytorialnego, jak również wszelkich innych decyzji dotyczących zagospodarowania tego pasa;
Art. 37. 3. Pozwolenia wodnoprawne, decyzje o warunkach zabudowy i zagospodarowania terenu, decyzje o pozwoleniu na budowę oraz decyzje w sprawie zmian w zalesianiu, zadrzewianiu, tworzeniu obwodów łowieckich, a także projekty studium uwarunkowań i kierunków zagospodarowania przestrzennego gminy, miejscowych planów zagospodarowania przestrzennego i planów zagospodarowania przestrzennego województwa, dotyczące pasa technicznego, pasa ochronnego oraz morskich portów i przystani, wymagają uzgodnienia z dyrektorem właściwego urzędu morskiego.
4. Wszystkie plany i projekty związane z zagospodarowaniem morskich wód wewnętrznych i morza terytorialnego są zatwierdzane przez organy administracji morskiej w uzgodnieniu z właściwymi gminami nadmorskimi.
Art. 42. 2. W szczególności do organów administracji morskiej należą sprawy:
10) uzgadnianie decyzji w sprawie wydawania pozwoleń wodnoprawnych i pozwoleń budowlanych na obszarze pasa technicznego, morskich portów i przystani, morskich wód wewnętrznych i morza terytorialnego, jak również wszelkich innych decyzji dotyczących zagospodarowania tego pasa;
piątek, 22 kwietnia 2011
ArcGIS/ArcSDE + PostgreSQL/PostGIS
Od kilku dni walczę z postawieniem serwera ArcSDE na bazie PostgreSQL. Serwer który dostałem miał domyślnie zainstalowany. Najpierw zainstalowałem najnowszy PostgreSQL 9 który obsługuje procesory 64 bitowe ale...
PostGIS dla Windows+PostgreSQL 9. Esri obsługuje tylko PostgreSQL 8.3.8, 8.4.1. Poniważ 8.3.8 obsługuje domyślne kodowanie Win1250, a mi ze wzlędu na CSW od deegree.org zależy na UTF zmuszony zostałem do zainstalowania wersji 8.4.1. Nie znajdziesz jej łatwo, ale gdy poszukasz to komplet znajdziesz pod adresami:
PostgreSQl 8.4.1
PostGIS 1.4.0
W ten sposób mamy komplet, który jest oficjalnie wspierany przez Esri. Jestem prawie pewien, że postawiłbym ten serwer na nowszym np. PostgreSQL 8.4.7, ale gdy pytasz o cokolwiek w esri to pytają o wersję bazy i niech tylko jeden numerek się różni to już wysyłają Cię na drzewo.
PostgreSQL 8.4.1 nie połączysz z ArcSDE za pomocą standardowego kreatora. Musisz użyć sporo komend w linii poleceń. Wszystko jest czytelnie opisane na stronach esri
Creating a geodatabase in PostgreSQL 8.4.1 on Windows
Postępowałem zgodnie z poleceniami, z tą różnicą, że poleceń SQL nie chciało mi się ręcznie klepać więc bazę i użytkowników utworzyłem za pomocą PgAdmin. Druga różnica to taka, że mi zależało, żeby baza była utworzona na szablonie PostGIS, żeby potem można było ewentualnie używać jej przez inne edytory typu Quantum GIS i żeby sam ArcGIS umiał czytać warstwy utworzone przez inne edytory (zmienna GEOMETRY_STORAGE = "PG_GEOMETRY"). Dlatego:
Tworzenie bazy w PgAdmin
Utworzyłem użytkownika 'sde' i 'umgdy' oraz table space 'sde'
Utowrzyłem nową bazę na szablonie 'template_postgis', z właścicielem 'sde' i tablespace 'sde'
Utworzyłem schematy 'sde' i 'umgdy' dla edytorów odpowiednio z właścicielami 'sde' i 'umgdy' (ArcSDE na PostgreSQL wymaga aby dla każdej nazwy użytkownika był utworzony schemat o takiej samej nazwie).
Nadałem odpowiednie uprawnienia do schematów i do tabel systemowych PostGIS (w oknie poleceń SQL):
Na koniec należy utworzyć bazy systemowe ArcSDE używając wiersza poleceń:
gdy serwer jest na lokalnej maszynie można ominąć parametr -s<server_name>
Należy otworzyć notatnik jako adminstrator i dodać do plików
C:\Program Files (x86)\ArcGIS\ArcSDE\pgexe\etc\services.sde
C:\Windows\System32\drivers\etc\services
linijkę:
Autoryzacja licencji
Żeby odpalić kreatora ArcSDE trzeba skopiować pliki z folderu
c:\Program Files (x86)\ArcGIS\ArcSDE\pgexe\pg841_st_lib
do folderów
C:\Program Files (x86)\PostgreSQL\8.4\lib - tu wiadomo
c:\bin - taka niedoróbka programistów z esri, szuka w domyślym folderze nie wiedzieć czemu
Start > All Programs > ArcGIS > ArcSDE > ArcSDE for PostgreSQL Post Installation
uruchamiając kreatora jako administrator i wybierając opcję 'Custom'. Dalej należy wybrać tylko Authorize ArcSDE, wpisać dane, dalej, dalej, dalej...
Instalacja usług sieciowych
Najłatwiej utworzyć plik BAT i wpisać:
---
esri_sde_pg_arcgis - to nazwa usługi
arcgis - to nazwa bazy danych
Sprawdzenie funkcjonowania ArcSDE
Najpierw na serwerze w linii komend trzeba wpisać:
odpowiedź może wyglądać tak:
Ustawienie natywnego zapisu geometrii
ArcSDE domyślnie używa geometrii ST_GEOMETRY, którą rozumie tylko Esri, inne produkty zazwyczaj nie potrafią jej odczytać i traktują takie warstwy jak zwykłe tabele. Dlatego postanowiłem zmienić domyślny typ geometrii na PostGIS. W tym celu zmieniłem zmienną:
DEFAULTS .GEOMETRY_STORAGE = "PG_GEOMETRY"
za pomocą wiersza poleceń:
Przy czym ja na swojej lokalnej maszynie ominąłem -s <server_name>.
Za pomocą polecenia
sprawdziłem, że zmienna faktycznie została zmieniona więc przystąpiłem do testowego rysowania. Oczywiście nie ma co liczyć na to, że zadziałało...
Przy tworzeniu nowej warstwy wyświetlał się błądinvalid SRID CONTEXT: SQL statement "SELECT AddGeometryColumn('','', $1 , $2 , $3 ,$4 , $5 )"
Działo się tak dla Feature Dataset dla których był ustawiony układ współrzędnych 1992. Jednak gdy dodawałem Feature Class bezpośrednio w bazie przy ustawionym Unknown Coordinate System warstwa się dodawała. Sprawdziłem w Quantum GIS 1.6 - była widoczna jako "bez geometrii". Postanowiłem sprawdzić z drugiej strony - dodałem warstwę w QGis i sprawdziłem czy widać ją w ArcCatalog'u - widać ale też bez geometrii. Skoro mimo wszystko nie udało mi się połączyć do wspólnej pracy tych dwóch narzędzi to stwiedziłem, że wróce do standardowego dla Esri ustawienia GEOMETRY_STORAGE = "ST_GEOMETRY".
Literatura:
ArcGIS and the PostGIS geometry type
Feature classes in a geodatabase in PostgreSQL
Use ArcSDE with SQL Server 2008 R2 Express to enable a 10 GB storage limit
Adding users to an ArcSDE geodatabase
PostGIS dla Windows+PostgreSQL 9. Esri obsługuje tylko PostgreSQL 8.3.8, 8.4.1. Poniważ 8.3.8 obsługuje domyślne kodowanie Win1250, a mi ze wzlędu na CSW od deegree.org zależy na UTF zmuszony zostałem do zainstalowania wersji 8.4.1. Nie znajdziesz jej łatwo, ale gdy poszukasz to komplet znajdziesz pod adresami:
PostgreSQl 8.4.1
PostGIS 1.4.0
W ten sposób mamy komplet, który jest oficjalnie wspierany przez Esri. Jestem prawie pewien, że postawiłbym ten serwer na nowszym np. PostgreSQL 8.4.7, ale gdy pytasz o cokolwiek w esri to pytają o wersję bazy i niech tylko jeden numerek się różni to już wysyłają Cię na drzewo.
PostgreSQL 8.4.1 nie połączysz z ArcSDE za pomocą standardowego kreatora. Musisz użyć sporo komend w linii poleceń. Wszystko jest czytelnie opisane na stronach esri
Creating a geodatabase in PostgreSQL 8.4.1 on Windows
Postępowałem zgodnie z poleceniami, z tą różnicą, że poleceń SQL nie chciało mi się ręcznie klepać więc bazę i użytkowników utworzyłem za pomocą PgAdmin. Druga różnica to taka, że mi zależało, żeby baza była utworzona na szablonie PostGIS, żeby potem można było ewentualnie używać jej przez inne edytory typu Quantum GIS i żeby sam ArcGIS umiał czytać warstwy utworzone przez inne edytory (zmienna GEOMETRY_STORAGE = "PG_GEOMETRY"). Dlatego:
Tworzenie bazy w PgAdmin
Utworzyłem użytkownika 'sde' i 'umgdy' oraz table space 'sde'
Utowrzyłem nową bazę na szablonie 'template_postgis', z właścicielem 'sde' i tablespace 'sde'
Utworzyłem schematy 'sde' i 'umgdy' dla edytorów odpowiednio z właścicielami 'sde' i 'umgdy' (ArcSDE na PostgreSQL wymaga aby dla każdej nazwy użytkownika był utworzony schemat o takiej samej nazwie).
Nadałem odpowiednie uprawnienia do schematów i do tabel systemowych PostGIS (w oknie poleceń SQL):
grant all privileges on schema public to sde;
grant all privileges on schema public to umgdy;
GRANT USAGE ON SCHEMA sde TO public;
grant all privileges on table public.geometry_columns to sde;
grant all privileges on table public.geometry_columns to umgdy;
grant all privileges on table public.spatial_ref_sys to sde;
grant all privileges on table public.spatial_ref_sys to umgdy;
Na koniec należy utworzyć bazy systemowe ArcSDE używając wiersza poleceń:
sdesetup -o install -d POSTGRESQL -D arcgis -u sde -p <haslo> -s<server_name>
gdy serwer jest na lokalnej maszynie można ominąć parametr -s<server_name>
Konfiguracja usług sieciowych
Należy otworzyć notatnik jako adminstrator i dodać do plików
C:\Program Files (x86)\ArcGIS\ArcSDE\pgexe\etc\services.sde
C:\Windows\System32\drivers\etc\services
linijkę:
esri_sde_pg_arcgis 5151/tcp #ArcSDE for PostgreSQL with 'arcgis' database
Autoryzacja licencji
Żeby odpalić kreatora ArcSDE trzeba skopiować pliki z folderu
c:\Program Files (x86)\ArcGIS\ArcSDE\pgexe\pg841_st_lib
do folderów
C:\Program Files (x86)\PostgreSQL\8.4\lib - tu wiadomo
c:\bin - taka niedoróbka programistów z esri, szuka w domyślym folderze nie wiedzieć czemu
Start > All Programs > ArcGIS > ArcSDE > ArcSDE for PostgreSQL Post Installation
uruchamiając kreatora jako administrator i wybierając opcję 'Custom'. Dalej należy wybrać tylko Authorize ArcSDE, wpisać dane, dalej, dalej, dalej...
Instalacja usług sieciowych
Najłatwiej utworzyć plik BAT i wpisać:
sdeservice -o create -d postgresql,postgresql-8.4 -p <hasło> -i esri_sde_pg_arcgis
sdeservice -o register -r ADMIN_DATABASE -v arcgis -d postgresql -p <hasło> -i esri_sde_pg_arcgis
sdemon -o start -i esri_sde_pg_arcgis -p <hasło>
pause
---
esri_sde_pg_arcgis - to nazwa usługi
arcgis - to nazwa bazy danych
Sprawdzenie funkcjonowania ArcSDE
Najpierw na serwerze w linii komend trzeba wpisać:
sdeservice -o list
odpowiedź może wyglądać tak:
SDE service Information
--------------------------------------------------------------------
RDBMS: PostgreSQL
Name: ArcSde Service(esri_sde_pg_arcgis)
SDEHOME: C:\Program Files (x86)\ArcGIS\ArcSDE\pgexe\
Datasource: UMGIS
Admin_database: arcgis
Version: 10.0
Status: SERVICE_RUNNING
Ustawienie natywnego zapisu geometrii
ArcSDE domyślnie używa geometrii ST_GEOMETRY, którą rozumie tylko Esri, inne produkty zazwyczaj nie potrafią jej odczytać i traktują takie warstwy jak zwykłe tabele. Dlatego postanowiłem zmienić domyślny typ geometrii na PostGIS. W tym celu zmieniłem zmienną:
DEFAULTS .GEOMETRY_STORAGE = "PG_GEOMETRY"
za pomocą wiersza poleceń:
sdedbtune -o alter -i <service_name> -k DEFAULTS -P GEOMETRY_STORAGE -v "PG_GEOMETRY" -s <server_name> -D postgis -u sde -p <ArcSDE_admin_password>
Przy czym ja na swojej lokalnej maszynie ominąłem -s <server_name>.
Za pomocą polecenia
sdedbtune -o list -D <db_name> -u <user_name:sde> -p haslo012 -i <service_name>
sprawdziłem, że zmienna faktycznie została zmieniona więc przystąpiłem do testowego rysowania. Oczywiście nie ma co liczyć na to, że zadziałało...
Przy tworzeniu nowej warstwy wyświetlał się błądinvalid SRID CONTEXT: SQL statement "SELECT AddGeometryColumn('','', $1 , $2 , $3 ,$4 , $5 )"
Działo się tak dla Feature Dataset dla których był ustawiony układ współrzędnych 1992. Jednak gdy dodawałem Feature Class bezpośrednio w bazie przy ustawionym Unknown Coordinate System warstwa się dodawała. Sprawdziłem w Quantum GIS 1.6 - była widoczna jako "bez geometrii". Postanowiłem sprawdzić z drugiej strony - dodałem warstwę w QGis i sprawdziłem czy widać ją w ArcCatalog'u - widać ale też bez geometrii. Skoro mimo wszystko nie udało mi się połączyć do wspólnej pracy tych dwóch narzędzi to stwiedziłem, że wróce do standardowego dla Esri ustawienia GEOMETRY_STORAGE = "ST_GEOMETRY".
Literatura:
ArcGIS and the PostGIS geometry type
Feature classes in a geodatabase in PostgreSQL
Use ArcSDE with SQL Server 2008 R2 Express to enable a 10 GB storage limit
Adding users to an ArcSDE geodatabase
Subskrybuj:
Posty (Atom)