16

MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie
Page 2: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

MapInfo to baza danychM a p I n f o t o b a z a d a n y c h a l e k a ż d y w i e r s z t a b e l i m o ż em i e ć j e s z c z e o b i e k t n a r y s u n k u - m a p i e .

Tabela jest jednocześnie warstwą mapy.Wiersz tabeli jest zwykle obiektem na warstwie.

Uwaga: większość skomplikowanych obiektów, jak ulice jest opisana kilkoma wierszami w tabeli. Np. każdy segment ulicy ma swójosobny rekord.

Page 3: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

O t w i e r a m y ' m i a s t o ' w M a p I n f o .

Każda tabela jest w osobnym pliku:

warszawa_dz.tab to kontury i dane dzielnicwarszawa_gr.tab to granice miastawarszawa_ko.tab to trasy kolejowewarszawa_me.tab to metro (linia i stacje)warszawa_ul.tab to ulice, ale bez informacji o nazwachwarszawa.tabto ulice z nazwami, ale bez powiązania między segmentamiwarszawa.wo.tab to zbiorniki wodnewarszawa_zi.tab to zieleń

Page 4: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

W i ę c e j m i a s t j e d n o c z e ś n i eJeśli wczytamy więcej miast, każde znajduje się na swoim geograficznym miejscu na mapie. Mają też osobne tabele, dlatego nie dasię bezpośrednio pracować na danych dwóch miast, chyba że przepiszemy je do nowych tabel.

Uwaga: zamykamy niepotrzebne tabele, żeby zaoszczędzić czas na

regenerację mapy.

Page 5: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

W y b i e r a n i e o b i e k t ó wMożemy wybrać niektóre obiekty i skopiować je do nowej tabeli. Używamy do tego SQL:select * from warszawa_zi where typ='cmentarz';#mapinfo_szukamy_cmentarzy.jpg into table named 'cmentarze';Efekt pytania SQL zwykle pojawia się jako nowa tabela, ale żeby zobaczyć ją na mapie, trzeba ją dodać do konkretnego okna mapy:

Nowa warstwa i nowa tabela noszą nazwę 'cmentarze'. Tabela ma taką samą strukturę jak oryginalna 'warszawa_zi', więc zawieratylko kolumny 'nazwa' i 'typ'. Jednak dzięki temu, że jest ona związana z mapą, możemy wydobyć z niej o wiele więcej informacji.Wpisujemy zapytanie:select nazwa, typ, Area(obj, "sq m")

from warszawa_ziwhere typ='cmentarz'into table named 'cmentarze';

i otrzymujemy tabelkę 'cmentarze', ale rozszerzoną o kolumnę z powierzchnią każdego nekroparku ;). Funkcja Area(obj,"jednostka") podaje powierzchnię obiektu związanego z wierszem tabeli w "jednostkach".

3

Page 6: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

D z i e l n i c e ż y w y c h t r u p ó wTeraz czas na sprawdzenie, w jakich dzielnicach możemy liczyć na zombie:select warszawa_dz.nazwa, warszawa_zi.nazwa, Area(warszawa_zi.obj, "sq m")

from warszawa_zi, warszawa_dzwhere warszawa_zi.typ="cmentarz" and warszawa_dz.obj contains warszawa_zi.objinto table named 'cmentarze';

Żeby dowiedzieć się, w jakiej dzielnicy znajduje się cmentarz, musimy skorzystać z dwóch tabel: warszawa_zi i warszawa_dz.Jedna zawiera nasze cmentarze, a druga dzielnice. Tutaj objawia się główna zaleta GIS, czyli możliwość pytania o geometerię,czyli np. "pokaż te, które się zawierają w tamtych". Podobnie jak w MySQL, żeby użyć dwóch tabel, musimy je związać jakimśsensownym warunkiem. Ten warunek tutaj to "warszawa_dz.obj contains warszawa_zi.obj" czyli dosłownie "obiekt z tabeli dzielniczawierający obiekt z tabeli zieleni". Dodatkowo prosimy tylko o obiekty z zieleni o typie 'cmentarz'.

Oprócz takiego warunku, musimy poprosić o konkretne kolumny z obu tabel. Ponieważ obie mają kolumnę 'nazwa', to piszemydokładnie o nazwę z której tabeli nam chodzi:select warszawa_dz.nazwa, warszawa_zi.nazwa...czyli najpierw nazwa dzielnicy, potem cmentarza.

Ćwiczenie: wybrać z warstwy warszawa segmenty dróg o długości co najmniej 200 metrów i o typie"główna","przejazdowa","przelotowa". Stworzyć z nich warstwę warszawa_drogi_glowne.

P o d s u m o w a n i e d z i e l n i cMożna to zrobić w Excelu, po wyciągnięciu tabelki 'cmentarze', ale można też podsumować ją w MapInfo. Zrobimy to dodającklauzulę grupowania wierszy i prosząc o kolumnę z sumą powierzchni:

select warszawa_dz.nazwa, sum(Area(warszawa_zi.obj, "sq m"))from warszawa_zi, warszawa_dzwhere warszawa_zi.typ="cmentarz" and warszawa_dz.obj contains warszawa_zi.objgroup by warszawa_dz.nazwainto table named 'cmentarze';

Od razu widać, że Targówek, Wola i Bielany to dzielnice o największym potencjale. Sprawdzimy jeszcze, jak powierzchniacmentarza ma się do całej dzielnicy, ale już z pomocą excela. Najpierw zapytanie:

select warszawa_dz.nazwa, sum(Area(warszawa_zi.obj, "sq m")), Area(warszawa_dz.obj, "sq m")from warszawa_zi, warszawa_dzwhere warszawa_zi.typ="cmentarz" and warszawa_dz.obj contains warszawa_zi.objgroup by warszawa_dz.nazwainto table named 'cmentarze';

Potem eksport tabeli cmentarze to excela: Table->Export

Wybieramy, jak to mówi kolega Kodym, format PCV. (Comma Separated Values czyli Przecinkiem Cięte Vartości). To nasz ulubionyformat. Jeśli bardzo chcemy, żeby w pierwszym wierszu były nagłówki, to zaznaczamy jeszcze 'Use First Line For Column Titles' oczywiście.

4

Page 7: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

i po wczytaniu tego pliku do excela mamy takie dane:

Wykres nr 1. Dzielnica

10000000 20000000 30000000 40000000 50000000 60000000 70000000

pow. cmentarza: 1 104 657

pow. dzielnicy: 18 754 077

Wola

pow. cmentarza: 1 218 731

pow. dzielnicy: 24 930 145

Targówek

pow. cmentarza: 1 284 079

pow. dzielnicy: 32 278 861

Bielany

pow. cmentarza: 231 076

pow. dzielnicy: 8 654 908

Żoliborz

pow. cmentarza: 220 772

pow. dzielnicy: 34 940 012

Mokotów

pow. cmentarza: 106 573

pow. dzielnicy: 28 819 339

Włochy

pow. cmentarza: 65 324

pow. dzielnicy: 19 276 780

Rembertów

pow. cmentarza: 93 987

pow. dzielnicy: 43 950 596

Ursynów

pow. cmentarza: 16 640

pow. dzielnicy: 9 226 626

Ursus

pow. cmentarza: 91 052

pow. dzielnicy: 77 380 655

Wawer

pow. cmentarza: 39 838

pow. dzielnicy: 37 342 708

Wilanów

pow. cmentarza: 35 891

pow. dzielnicy: 72 388 926

Białołęka

pow. cmentarza: 6 878

pow. dzielnicy: 23 434 057

Wesoła

5

Page 8: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Nanoszenie punktów na mapęc z y l i g e o k o d o w a n i e

Załóżmy, że mamy listę inwestycji, sporządzoną w Excelu i chcielibyśmy pokazać te punkty na mapie. Załóżmy też, że mapaogranicza się do Warszawy i że znamy adresy tych inwestycji. Mamy więc tabelkę jak ta poniżej:

TYP NAZWA_INWESTYCJI ID adres cena za mkw od inwestor

apartamenty Słoneczny Skwer 4710 ul.Korotyńskiego 26 1 000 Ronson Development Group

apartamenty Przy Bernardyńskiej Wodzie 4690 ul. Przy Bernardyńskiej Wodzie, róg Powsińskiej i Idzikowskiego 1 000 Catalina Development Sp. z o.o.

apartamenty Willa Nowa Julianowska II 4817 ul. Zorzy Polarnej 1 017 Kanada Polska Kabaty Sp. z o.o.

apartamenty Willa Nowa Julianowska II 4707 ul. Zorzy Polarnej 1 017 Kanada Polska Kabaty Sp. z o.o.

apartamenty Mieszkania Przy Wyścigach 4739 al. Wyścigowa 4 1 040 Catalina Investment Sp. z o.o.

apartamenty Przy Oranżerii 4680 ul. Chodkiewicza 11 1 190 MPRO Sp. z o.o.

apartamenty Ogrody Shiraz 4696 ul. Drawska 14/16 1 250 Shiraz Sp. z o.o.

apartamenty SAWA PARK 4662 Pl. Przymierza 6 1 370 Sawa Development Sp. z o.o.

apartamenty Walecznych 39 4744 ul. Walecznych 39 1 450 Catalina Development

mieszkania Osiedle Dom 2000 Ursynów 4675 ul. Wańkowicza 1 500 SM DOM 2000 BRZEZINY

[patrzplikwarszawa_listing.xls]

OK. Teraz otwieramy ten plik w MapInfo, tak jakby to była warstwa mapy. Pamiętamy, żeby najpierw zamknąć plik w excelu- inaczej MI nie otworzy nic.

Wybieramy, czy pierwszy wiersz tabeli to nagłówki. Dobrze jest unikać nagłówków ze spacjami i innymi trudnymi do wymówieniaznakami. MapInfo zamieni je pewnie i tak na podkreślenia albo uniemożliwi korzystanie z tabeli.

Program pyta jeszcze głupio o typy danych w poszczególnych kolumnach, proponując najczęściej dość nieszczęśliwie. Ogólnie:wszystkie pola z cenami, powierzchniami powinny być typu Float (zmiennoprzecinkowe), pola z ID, z ilością pokoi, piętrem itp.- typu Integer (całkowite), a pola z nazwami inwestycji, adresami, nazwami miast itp. - typu Character (tekstowe). Liczba w nawiasieobok słowa "character" oznacza maksymalną długość nazwy, jaką to pole zapamięta.

6

Page 9: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Otwiera się tabelka z danymi i... zaczynamy geokodowanie. Zauważmy, że adresy pozbawione skrótów "ul." (ale mogą być "pl." lub"plac"). Nie ma też spacji przed nazwą ulicy. Na razie wiersze naszej tabeli nie mają żadnej reprezentacji na mapie.

Wybieramy z listy naszą wczytaną tabelkę, kolumnę, z której zbierane będą adresy, potem tabelę i kolumnę w której MapInfo tychadresów będzie szukać. Zaznaczamy opcję 'interactive' - przynajmniej póki nie wiemy czy i jak działa 'automatic'.

Dla naszych standardów ważny jest też symbol, którego użyjemy do oznaczania punktów. Wybieramy czcionkę Wingdings, rozmiar18, symbol w kształcie kółka. Dodatkowo włączamy opcję 'halo' - czyli białą obwódkę dookoła kółka.

7

Page 10: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Po tych ustaleniach klikamy OK i potwierdzamy (lub nie) znalezione przez MI adresy. Do skutku. Na koniec dostaniemy komunikat,ile obiektów otrzymało lokalizację, ile nie i ile było zgeokodowanych wcześniej.

Dodajemy tabelkę do listy warstw na mapie, ustawiając przy okazji opis punktu tak, aby łatwiej nam było poprawić lokalizacje. Jakoetykietę ustawiamy więc pole NAZWA_INWESTYCJI, styl tekstu to Arial, 6pt, czarny z 'halo'. Włączamy 'Allow Duplicate Text'i 'Allow Overlapping Text', czyli pozwól na duplikaty i nakładanie etykiet (dotyczy tylko tej warstwy).

Po dodaniu warstwy do mapy i włączeniu etykiet otrzymujemy taki oto bałagan (ang. mess):

8

Page 11: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Powiększamy sobie mapkę po kawałku, włączamy podkład z ulicami i co tam jeszcze potrzebne, no i przesuwamy mozolniepunkciki do właściwych miejsc. Warstwa z naszą tabelką musi być ustawiona jako 'do edycji' na liście warstw. Przyda się kobinacjaAlt+strzałka w lewo żeby szybko wrócić do poprzedniego widoku mapy.

9

Page 12: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

E k s p o r t w s p ó ł r z ę d n y c h g e o g r a f i c z n y c h

Kiedy już mamy wszystkie punkty naniesione poprawnie, wystarczy wyeksportować dane do pliku CSV. Jednak w tabeli nie widaćkolumn ze współrzędnymi! Trzeba stworzyć nową tabelę, w której "odkryjemy" te pola - bo przecież MapInfo już je gdzieś pamięta.

select ID, NAZWA_INWESTYCJI, inwestor, CentroidX(obj),CentroidY(obj)from listing_warszawainto table named listing_warszawa_wsp

Pewnie zdarzyło się, że kilka adresów nie zostało odnalezionych i w kolumnach CentroidX i Y są puste pola. W takim przypadku,wiedząc gdzie punkt powinien się znaleźć, zaznaczamy kwadracik na lewo od wiersza z brakującymi współrzędnymi, wybieramynarzędzie 'szpila' i zaznaczamy punkt ręcznie na mapie. W tabelce powinny pojawić się współrzędne.

10

Page 13: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Gdyby jeszcze interesowało nas, w jakiej dzielnicy znajduje się jaka inwestycja, uruchamiamy takie zapytanie:

Teraz już pozostaje tylko Table->Export->format CVS. Może się zdarzyć, że będziemy chcieli dopisać coś do excela, w którym jużmamy zapisane współrzędne. Oczywiście nie chcemy powtarzać całej operacji, tylko ustawić nowe lokalizacje. Czyli wczytaćz Excela do MapInfo zapisane współrzędne i odnaleźć świeżo dopisane inwestycje. Podobnie będziemy postępować nanoszącpunkty odczytane np. z GPS w trakcie "wizji lokalnej". W Excelu sprawa jest prosta: dopisujemy nowe wiersze do tabelki. Jeśli nieznamy współrzędnych - zostawiamy puste miejsca. Pamiętamy o sprawdzeniu, czy nagłówki kolumn są sensowne (bez spacji,znaczków, itp.)

Po wczytaniu do MapInfo, wybieramy: Table->Create Points i wypełniamy formularz jak na rysunku.

Klikamy OK i kiedy dodamy warstwę do mapy, pokażą się punkty w tych samych miejscach, w których je zostawiliśmy poprzednio.Niestety gubiona jest informacja o stylu etykiet. Ręcznie dodajemy nowe i powtarzamy operację zapisu do CVS.

11

Page 14: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

M a p y t e m a t y c z n e - r a p o r t y

Mając włączone okno mapy i wczytaną zgeokodowaną tabelę z danymi liczbowymi, możemy zabrać się za malarstwo. Tworzenieobrazków przedstawiających słupki, plamki i inne abstrakcje jest łatwe. Z reguły najpierw klonujemy okno mapy, zwłaszcza jeślimamy tam jakieś bazowe ustawienia - mapa tematyczna może je nadpisać. Prawy klawisz myszki w oknie mapy wyświetli menuz opcją 'Clone view' - właśnie do skopiowania okna.

Aby stworzyć mapę tematyczną, wciskamy F9. Na początek najbardziej efektowna mapa - opcja Grid.

Wybieramy tabelę i kolumnę, z której będziemy czerpać dane. Podajemy też, wewnątrz jakiej warstwy będziemy malować.

12

Page 15: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

Kolejne F9 i dodajemy słupki z cenami minimalnymi za mkw.

13

Page 16: MapInfo to baza danych - NTXTntxt.net/_files/szkolenie_mapinfo_001.pdf · MapInfo to baza danych MapInfo to baza danych ale każdy wiersz tabeli może mieć jeszcze obiekt na rysunku-mapie

linki:http://www.imagis.pl/opro/analizy/mapinfopro.htmstrona polskiego dealera MapInfo o programiehttp://www.gis.com/ogólnie co to jest GIShttp://maps.google.com/zdjęcia satelitarne z googlehttp://www.opengeospatial.orgotwarty międzynarodowy standard opisu danych GIShttp://www.mysql.com/search/?q=gis&charset=rozszerzenie bazy MySQL o GIShttp://www.warszawaonline.pl/index.php?id=2&seltyp=natopie&wart1499=G238&db=trasycmentarze Warszawy

przygotował: Piotr Tomaszewski, 2005-08-19, [email protected]

14