Kami sedang membina pelayan pemetaan GeoQlik berdasarkan PostgreSQL dan PostGis. PostGIS: persediaan pangkalan data. Pemasangan skrip daripada OpenStreetMap untuk menjana jubin

  • Tutorial

Baru-baru ini timbul tugas untuk mencipta perisian untuk menghasilkan jubin kartografi. Sebagai asas, pilihan jatuh pada mapnik (terdapat beberapa alternatif untuknya). Ternyata, terdapat banyak kesulitan sepanjang perjalanan, kesilapan yang tidak dijangka, tetapi tidak mungkin untuk mencari dokumentasi yang lebih atau kurang jelas untuk menyediakan segala-galanya secara turnkey. Selepas bermain-main beberapa lama, saya berjaya mengumpul banyak garu yang mungkin timbul dan membawa perkara itu ke penghujung yang menang. Inilah yang dimaksudkan dengan artikel tersebut.

Pemasangan telah dijalankan pada Ubuntu dan Debian. Saya akan katakan dengan segera bahawa ia lebih baik untuk digunakan versi terkini produk perisian, yang kadangkala tiada dalam repositori. Mereka boleh dimuat turun, jika dikehendaki, secara manual dari tapak web rasmi.

Selain daripada kebergantungan yang diperlukan, secara amnya kita akan perlukan

  • PostgreSQL >= 8.4
  • PostGIS >= 1.5< 2
  • Python 2.x
  • Mapnik >= 2
  • Osm2pgsql
  • Beberapa pengetahuan tentang bekerja dengan bash, Python dan PostgreSQL

Memasang PostgreSQL

Mula-mula, mari kita semak versi PostgreSQL yang kita ada dalam repositori kami:
$ apt-cache tunjukkan postgresql
Jika versi 8.4 atau lebih baru, kemudian pasang pakej.
$ sudo apt-get install postgresql
Jika tidak, muat turun pakej dari tapak web rasmi www.postgresql.org/download/linux dan pasangkannya. Seterusnya kita perlu mengkonfigurasi pangkalan data kita. Secara lalai, penggunanya adalah postgres dan anda hanya boleh log masuk menggunakannya menggunakan OS itu sendiri. Walau bagaimanapun, kami akan melakukan perkara yang sedikit berbeza, mula-mula kami akan membuka fail pg_hba.conf. Anda boleh mengetahui lokasinya menggunakan utiliti locate.

$ sudo updatedb $ sudo cari pg_hba.conf
Jika anda tidak memasang utiliti ini, kemudian pasang
$ sudo apt-get install findutils cari
dan ulangi arahan di atas. Sebagai contoh, bagi saya fail ini terletak di /etc/postgresql/8.4/main/pg_hba.conf. Buka dan editnya.

$ sudo vi "/etc/postgresql/8.4/main/pg_hba.conf"
Kami menggantikan:
$ locate all all ident # Authorization menggunakan alat OS
hidup
$ cari semua kata laluan # Pengesahan kata laluan
Simpan fail dan mulakan semula PostgreSQL.
$ sudo "/etc/init.d/postgresql-8.4 restart"
Kini kami boleh mencipta mana-mana pengguna pangkalan data dan log masuk menggunakan kata laluan biasa tanpa sebarang penyulitan (keselamatan super tidak penting bagi kami). Dan juga kita akan perlukan pangkalan baru data untuk data OSM kami.
Pergi ke konsol pengurusan PostgreSQL.
$ su postgres $ psql postgres=# CIPTA PERANAN osm DENGAN SUPERUSER PASSWORD ‘my_password’ LOGIN; CIPTA PERANAN postgres=# CIPTA PANGKALAN DATA osm; BUAT PANGKALAN DATA postgres=# \q
Pengguna dan pangkalan data telah dibuat.
Anda boleh menyemak kefungsian pengguna baharu dengan arahan
$ psql -U osm -d osm -W
Jika selepas memasukkan kata laluan anda, anda dibawa ke konsol PostgreSQL, maka semuanya berjaya.

Memasang PostGIS

Kami memerlukan PostGIS. Repositori saya mempunyai versi 1.4. Oleh kerana, selepas memasangnya, atas sebab tertentu saya tidak dapat mencari fail postgis.sql, saya merobohkan versi ini dan memuat turun versi 1.5 dari laman web rasmi. Oleh itu, dalam artikel ini kita akan melakukan perkara yang sama.
$ wget "http://postgis.refractions.net/download/postgis-1.5.4.tar.gz"
Kami membongkar arkib, memasang dan memasang.
$ tar xvfz "./postgis-1.5.4.tar.gz" $ cd "./postgis-1.5.4" $ sudo ./configure $ sudo make install
Sekiranya tidak hadir perpustakaan yang diperlukan, pasangkannya.
Seterusnya, pasang bahasa khas dalam pangkalan data osm.
$ createlang plpgsql osm -U osm -W
Kini anda perlu melaksanakan dua skrip SQL ke dalam pangkalan data osm: postgis.sql dan 900913.sql.
Menggunakan utiliti locate, kami mencari lokasi mereka dan melaksanakannya.
$ psql -U osm -d osm -W -f "/usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql" $ psql -U osm -d osm -W -f "/usr/share/ osm2pgsql/900913.sql"
Sila ambil perhatian bagaimana amalan telah ditunjukkan perintah ini mesti dilaksanakan sebagai pengguna dengan keistimewaan superuser PostgreSQL. Jika anda menghadapi masalah dan ralat perancangan RALAT: jenis "geometri" tidak wujud, kemudian cuba sebelum melaksanakan fail sql melaksanakan:
$ sudo ldconfig
dan ulangi arahan itu melancarkan sql fail.
Semua! Kami telah selesai menyediakan PostgreSQL. Mari kita teruskan untuk memasang Mapnik.

Memasang Mapnik

$ sudo add-apt-repository ppa:mapnik/nightly-trunk $ sudo apt-get kemas kini $ sudo apt-get install libmapnik mapnik-utils python-mapnik
Jika sistem melaporkan bahawa "add-apt-repository: command tidak ditemui", Itu
$ sudo apt-get install python-software-properties
Dan ulangi tiga arahan di atas. Mapnik dipasang. Saya tidak menulis tentang keperluan Pemasangan Python, kerana dalam kebanyakan kes ia sentiasa sudah berdiri. Menyemak kerja mapnik.
$ python >>> import mapnik
Jika tiada ralat berlaku, maka semuanya berjalan lancar. Sekarang mari kita teruskan untuk memasang osm2pgsql

Memasang Osm2pgsql

$ sudo apt-get install osm2pgsql
Ada satu perkara penting lagi. Masalahnya ialah fail default.style yang dibekalkan oleh osm2pgsql untuk eksport data osm ke pangkalan data, atas sebab tertentu tidak mematuhi format OSM terkini. (Mungkin ada yang tahu kenapa?). Muat turun fail format yang betul.
$wget "http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/default.style"
Seterusnya, kami menggantikan yang datang secara lalai dengan osm2pgsql
$ sudo cp "./default.style" "/usr/share/osm2pgsql/default.style"

Pemasangan skrip daripada OpenStreetMap untuk menjana jubin

Repositori OpenStreetMap mengandungi banyak skrip dan utiliti mengenai topik kartografi. Kami memerlukan salah satu aplikasi yang ditulis dalam python, yang sudah mengandungi semua skrip yang kami perlukan untuk bekerja dengan mapnik. Untuk memuat turunnya anda perlu memasang Subversion.
$ sudo apt-get install subversion
Kini anda boleh memuat turun Aplikasi OSM dengan selamat. Buat folder untuk lokasinya. sebagai contoh, bagi saya ia adalah /home/osm/mapnik dan jalankan pembayaran.
$ mkdir "/home/osm/mapnik" $ svn co "http://svn.openstreetmap.org/applications/rendering/mapnik" "/home/osm/mapnik"
Sekarang kita menjalankan skrip yang terletak dalam aplikasi.
$ bash /home/osm/mapnik/get-coastlines.sh
Dia akan muat turun untuk kita fail yang diperlukan dengan bentuk dunia.
Sekarang anda perlu mencipta fail XML gaya. Ini dilakukan dengan arahan berikut:
$ python /home/osm/mapnik/generate_xml.py osm.xml my_osm.xml --dbname osm --user osm --password my_password --accept-none
Fail my_osm.xml akan dibuat dengan data untuk menyambung ke PostgreSQL.

Cubaan menulis

Kini tiba masanya apabila anda boleh memuat turun sebarang fail OSM dan menjana jubin berdasarkannya. Fail OSM boleh dimuat turun dari tapak yang dibentangkan pada halaman web wiki.openstreetmap.org/wiki/Planet.osm
Anda boleh, sudah tentu, memuat turun keseluruhan fail Planet.osm, tetapi adakah anda memerlukannya? Apabila dibongkar, ia mempunyai berat lebih daripada 250 GB.

Katakan kita mahu menjana jubin Moscow pada skala 17.
Muat turun fail OSM yang diperlukan.
$ wget "http://download.bbbike.org/osm/bbbike/Moscow/Moscow.osm.gz"
Sekarang kita boleh mengeksportnya ke pangkalan data.
$ sudo osm2pgsql -U osm -d osm Moscow.osm.gz
Semua! Yang tinggal hanyalah menjalankan skrip penjanaan jubin. Tetapi sebelum itu, kita perlu mengeditnya sedikit untuk menunjukkan skala dan koordinat yang dikehendaki jubin yang ingin kita terima. Buka fail /home/osm/mapnik/generate_tiles.py. Kami menetapkan pembolehubah fail peta untuk menunjuk ke my_osm.xml kami.
mapfile = "/home/osm/mapnik/my_osm.xml"
Seterusnya, takrifkan semula pembolehubah yang menentukan di mana anda mahu jubin diletakkan.
tile_dir = "/home/osm/mapnik/all_tiles"
Fail Moscow.osm yang kami muat turun mempunyai koordinat data vektor
xMin = 37.32000 yMin = 55.57000 xMax = 37.88000 yMax = 55.92000
Kami mencari baris berikut dalam skrip
bbox = (-180.0,-90.0, 180.0,90.0) render_tiles(bbox, mapfile, tile_dir, 0, 5, "Dunia")
Dan sebelum mereka (supaya tidak menimpa kod sedia ada) kami menulis:
bbox = (37.32000, 55.57000, 37.88000, 55.92000) render_tiles(bbox, mapfile, tile_dir, 17, 17, "Moscow") exit()
Adalah dinasihatkan untuk menulis exit() supaya skrip, selepas menjana jubin Moscow, tidak meneruskan untuk menjana seluruh dunia.
Parameter 4 dan 5 fungsi render_tiles menetapkan skala di mana kita akan menjana jubin. DALAM dalam kes ini kami hanya memilih 17 skala.

Simpan dan jalankan.
$ python /home/osm/mapnik/generate_tiles.py
Proses menghasilkan jubin akan bermula.

Anda juga boleh mendapatkan manual yang sangat baik di sini

Sekarang kita akan melihat proses memasang versi baharu DBMS PostgreSQL 9.5 pada sistem operasi Windows 7, dan juga ketahui perkara baharu dalam versi ini dan tempat anda boleh memuat turunnya.

Versi baharu telah dikeluarkan pada 01/07/2016 PostgreSQL DBMS, iaitu PostgreSQL 9.5, tetapi sebelum anda mula mempertimbangkan ciri baharu, saya cadangkan anda mengingati apakah PostgreSQL secara umum, dan kemudian teruskan untuk memasang dan menyemak versi baharu.

Apakah itu PostgreSQL?

PostgreSQL ialah sistem pengurusan pangkalan data hubungan objek (DBMS) percuma dan popular di seluruh dunia. PostgreSQL dilaksanakan untuk banyak sistem pengendalian, contohnya: Linux, Solaris, Windows. Ia menggunakan sambungan prosedur bahasa SQL PL/pgSQL.

Apakah yang baharu dalam PostgreSQL 9.5?

Versi ini mempunyai banyak ciri baharu yang akan sangat berguna untuk pembangun, berikut adalah beberapa daripadanya:

  • INSERT, PADA KEMASKINI KONFLIK(UPSERT) – peluang ini membolehkan anda mengendalikan situasi di mana adalah mustahil untuk menambah data melalui INSERT, contohnya, disebabkan oleh pelanggaran keunikan atau nilai tidak sah dalam salah satu medan. Dalam erti kata lain, daripada membuang ralat, anda boleh melangkau pelaksanaan pernyataan, i.e. tidak melakukan apa-apa atau menukar data yang dikaitkan dengan medan utama, i.e. dalam kes di mana rekod sudah wujud, lakukan KEMASKINI bukan INSERT;
  • SET GOLONG, KIUBUS dan KUMPULAN– pengendali ini memperluaskan keupayaan GROUP BY, iaitu, mereka membenarkan anda menjana laporan, i.e. tulis pertanyaan di mana anda boleh menambah baris dengan jumlah kecil dan jumlah besar, dan juga menggabungkan hasil beberapa kumpulan ke dalam satu set data. DALAM Microsoft SQL Pengendali serupa pelayan telah wujud untuk masa yang agak lama, dan kami membincangkannya secara terperinci dalam bahan ini;
  • Keselamatan Peringkat Baris(RLS) ialah apa yang dipanggil “ Dasar keselamatan peringkat baris"iaitu. Kini anda boleh menyekat akses kepada data dalam jadual;
  • indeks BRIN- Ini jenis baru indeks, yang direka untuk mengendalikan jadual yang sangat besar di mana lajur tertentu diisih secara semula jadi;
  • Pengisihan kelajuan– dalam PostgreSQL 9.5, apabila menyusun, algoritma yang dipanggil “ kunci dipendekkan", yang membolehkan anda mengisih data teks dan data jenis NUMERIC beberapa kali lebih pantas.

Anda boleh melihat butiran lanjut tentang semua inovasi dalam PostgreSQL 9.5 pada halaman dalam “ Wiki PostgreSQL"Ini dia: Apa yang baharu dalam PostgreSQL 9.5.

Di manakah saya boleh memuat turun PostgreSQL 9.5 untuk Windows 7?

Selepas anda sampai ke halaman, anda mesti klik " Muat turun»

Anda kemudiannya akan dialihkan ke halaman pemilihan versi PostgreSQL, dalam kes kami, kami berada dalam " Versi 9.5.0» pilih « Menang x86-32" untuk Windows 32-bit atau " Menang x86-64»untuk 64-bit. Saya 32 sedikit Windows 7, itulah sebabnya saya mengklik butang "Win ​​x86-32".

Akibatnya, fail akan dimuat turun, yang akan kami gunakan untuk memasang PostgreSQL.

Memasang PostgreSQL 9.5 pada Windows 7

Jadi, mari kita teruskan untuk memasang PostgreSQL 9.5, dengan cara itu, kita telah membincangkan pemasangan PostgreSQL sebelum ini, sebagai contoh, untuk pemula, saya menunjukkan bagaimana anda boleh memasang PostgreSQL pada Linux OpenSUSE 13.2, dan dalam bahan "Memasang PostgreSQL 9.4 pada CentOS 7.1 ” kami membincangkan , bagaimana anda boleh melaksanakan pelayan DBMS yang dipanggil menggunakan PostgreSQL dan beroperasi sistem Linux Sebagai contoh Pengedaran CentOS 7.1. Memasang PostgreSQL pada sistem pengendalian sistem Windows kami tidak menganggapnya, jadi hari ini kami akan memasang PostgreSQL 9.5 pada Windows 7.

Langkah 1

Jalankan fail yang dimuat turun ( postgresql-9.5.0-1-windows.exe). Akibatnya, program pemasangan akan bermula dan tetingkap pertama ialah " salam", klik " Seterusnya».

Langkah 2

Dalam tetingkap seterusnya kami menentukan direktori di mana PostgreSQL perlu dipasang, saya akan meninggalkannya sebagai lalai ( mereka. untuk memandu C), klik " Seterusnya».

Langkah 3

Seterusnya, kami menunjukkan direktori di mana fail pangkalan data akan ditempatkan secara lalai. Dalam erti kata lain, di sini semasa pemasangan anda boleh menukar direktori untuk menyimpan fail pangkalan data ini mungkin diperlukan dalam kes di mana bilangan pangkalan data adalah besar atau saiznya, i.e. Kelantangan akan menjadi ketara, seperti yang anda fahami, dalam kes ini adalah lebih baik untuk menentukan cakera berasingan dengan kapasiti yang mencukupi. Dalam kes saya ia pemasangan ujian, jadi saya akan biarkan ia sebagai lalai, klik " Seterusnya».

Langkah 4

Kemudian kami membuat, masukkan dan ingat kata laluan untuk pengguna postgres ( anda mesti memasukkan kata laluan yang sama dalam dua medan untuk mengesahkan), pengguna khusus ini adalah sejenis " Pengguna super"iaitu. ketua pentadbir, klik " Seterusnya».

Langkah 5

Langkah 6

Kemudian kami tentukan Tempatan ( parameter ini menentukan pengekodan data dalam pangkalan data), jika dibiarkan secara lalai, maka pengekodan data dalam pangkalan data akan menjadi UTF-8, tetapi jika anda memerlukan pengekodan berbeza, katakan Windows-1251, maka anda mesti memilih " Rusia, Rusia", saya akan biarkan ia sebagai lalai, i.e. " Tempatan lalai", klik " Seterusnya».

Langkah 7

Semuanya sedia untuk pemasangan, klik " Seterusnya».

Pemasangan telah bermula, proses akan berlangsung hanya beberapa minit.

Langkah 8

Pemasangan akan selesai dan dalam tetingkap terakhir kami akan digesa untuk menjalankan alat ( Pembina Tindanan) untuk pemasangan komponen tambahan PostgreSQL, jika anda tidak mahu memasang apa-apa tambahan, anda perlu menyahtanda kotak yang sepadan, klik " Selesai».

Lancarkan pgAdmin dan semak operasi PostgreSQL 9.5

Pemasang PostgreSQL 9.5 termasuk pgAdmin 1.22.0, i.e. Selain itu, tidak perlu memasang pgAdmin secara berasingan pada komputer yang anda pasang PostgreSQL 9.5.

Jika ada yang tidak mengenali pgAdmin ini istimewa persekitaran grafik pengaturcaraan dan pentadbiran untuk DBMS PostgreSQL.

Untuk melancarkan pgAdmin, klik " Mula ->Semua Program ->PostgreSQL 9.5 ->pgAdmin III»

Kami sudah pun memaparkannya pelayan tempatan kita mesti menyambung kepadanya, klik Klik dua kali Oleh " PostgreSQL 9.5 (localhost:5432)».

Kemudian anda perlu memasukkan kata laluan yang kami buat semasa kami memasang PostgreSQL 9.5 ( Untuk mengelak daripada memasukkan kata laluan anda setiap kali, anda boleh menandai kotak pilihan "Simpan kata laluan".). klik " okey».

jika " Simpan katalaluan"Anda telah menetapkannya, kemudian tetingkap akan muncul amaran bahawa menyimpan kata laluan adalah tidak selamat, kerana kata laluan akan disimpan dalam borang teks kosong dalam fail pgpass.conf yang terletak dalam direktori profil pengguna Windows. klik " okey».

Untuk melihat versi PostgreSQL, mari tulis SQL mudah pertanyaan dalam pangkalan data, yang dibuat secara lalai, i.e. dalam postgres.

Itu sahaja untuk saya, semoga berjaya!

Kami sedang membuat kerja kursus berpasukan di universiti dan kami terpaksa menggunakan PostGIS. Hakikatnya ialah kerja kursus itu tidak diambil daripada senarai tugasan standard, tetapi merupakan sebahagian daripada projek yang saya sedang bangunkan. Memandangkan kursus itu adalah kursus pasukan, tidak hairanlah bahawa OS ahli pasukan adalah berbeza. Saya, sudah tentu, tidak mengatakan bahawa dalam kes itu kerja berpasukan Setiap orang sepatutnya mempunyai OS yang berbeza, tetapi dalam kes kami ternyata begitu. Senarai OS terakhir termasuk yang berikut: Windows XP, Windows 7, Ubuntu dan LinuxMint. Tiada perbezaan asas dalam proses pemasangan. XP itu ialah Windows, Tujuh itu ialah Windows. Ubuntu ialah GNU/Linux, LinuxMint ialah GNU/Linux, juga berasaskan Ubuntu. Di sana dan di sana anda boleh memasang kedua-duanya dari binari dan dari sumber. Selain itu, sistem seperti Unix mempunyai repositori. Semasa kerja saya, saya juga menyeksa kira-kira sedozen pengedaran GNU/Linux untuk tujuan penilaian dan entah bagaimana memutuskan untuk memasang PostGIS pada Mandriva. Saya tidak ingat mengapa, tetapi atas sebab tertentu saya terpaksa bermain-main sedikit lebih lama daripada semasa bekerja dengan pengedaran lain. Berdasarkan ini, saya tidak akan menulis tentang Mandriva. Saya juga mahu memasangnya di Gentoo dan menulis mengenainya, tetapi setakat ini saya tidak mempunyai masa untuk mengacaukannya.
Oleh itu, menamatkan pengenalan lirik, saya akan mengatakan di mana OS pemasangan PostGIS akan dipertimbangkan:


Windows XP

Dengan Windows perkara yang agak mudah. Muat turun 2 binari dan jalankannya satu persatu. Binari pertama ialah pelayan Postgres itu sendiri. Ia boleh dimuat turun dari laman web rasmi. Binari kedua ialah, seperti yang dicadangkan oleh Kapten Obvious, alat PostGIS itu sendiri. Anda boleh mengambilnya. Dalam kes Windows, pembangun PostgreSQL melakukan segala-galanya dengan sangat baik. Apabila memasang pelayan itu sendiri, mereka juga akan melampirkan PgAdmin kepada anda, memberi anda sedikit lobak merah dan meletakkan StackBuilder di atas. Perkara ini membolehkan anda tidak menyelongkar kedalaman Internet dan tidak mencari pelbagai perkara lain seperti PostGIS dan Slony-I. Jadi, anda mungkin mahu memuat turun hanya pemasang pelayan, dan kemudian biarkan StackBuilder melakukan kerja kotornya. Juga, tiada siapa yang melarang anda memasang segala-galanya dari sumber :).
Pemaju telah menulis tentang cara memasang keseluruhan perkara ini dan, seperti dalam buku kanak-kanak, menggambarkan segala-galanya. Anda boleh melihat ini secara langsung. Satu-satunya perkara yang saya ingin ambil perhatian ialah semasa proses pemasangan PostGIS, adalah lebih baik untuk tidak menyahtanda kotak semak "Buat pangkalan data spatial" jika anda suka apabila seseorang melakukan sesuatu untuk anda. Secara peribadi, saya suka apabila pemasang memasang untuk saya fungsi yang diperlukan dan seterusnya, dan kemudian ia juga membuat templat, berdasarkan mana anda boleh mencipta pangkalan data pada masa hadapan dengan dua atau tiga klik tetikus.
Perlu diingat bahawa pemasang mengandungi versi 1.5 PostGIS (atau lebih baru). Jika, selepas memasangnya, anda perlu menyokong pangkalan data dengan lebih banyak lagi versi terdahulu PostGIS, kemudian muat turun binari (arkib) dari sini dan tambahkan kandungan direktori "lib" dan "kongsi" ke direktori Postgres dengan nama yang sama (contohnya, C:\Program Files\PostgreSQL\8.4\)


Ubuntu 11.04
Di Ubuntu anda tidak perlu pergi jauh. Kami membuka terminal, memasukkan arahan di bawah dan mendapat apa yang kami perlukan, iaitu: pelayan, klien, perpustakaan, dokumentasi, postgis, aplikasi grafik untuk pentadbiran.
sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4 postgresql-doc-8.4 postgresql-8.4-postgis sudo apt-get install pgadmin3 Seperti yang anda boleh lihat daripada arahan, versi pelayan kami ialah 8.4. Untuk menjadi lebih tepat, dengan melaksanakan pertanyaan sql
PILIH versi(); dalam kes saya, versi itu ditentukan sebagai 8.4.8.
Seterusnya anda perlu mengkonfigurasi pelayan pangkalan data itu sendiri. Tidak mahu menyalin-tampal, saya hanya akan memberikan di bawah beberapa pautan di mana ini ditulis dengan jelas.
  1. Rencana bahasa Inggeris di hocuspokus.net.
  2. Terjemahan bahasa Rusianya dengan nota di welinux.ru.

Saya ingin menambah sesuatu yang saya sendiri. Pertama, semasa menulis laluan direktori, berhati-hati tentang versi pelayan (anda tidak perlu mempunyai versi 8.3, seperti dalam contoh)
Kedua, dalam fail "pg_hba.conf" baris
# Log masuk pentadbiran pangkalan data oleh soket UNIX setempat semua postgres ident sameuser tidak disukai oleh pelayan dan terpaksa diganti dengan yang ini:
local all postgres md5 Inilah yang berkenaan dengan pemasangan dan konfigurasi pelayan itu sendiri.

Sekarang anda perlu mengkonfigurasi PostGIS (atau sebaliknya, tidak mengkonfigurasinya, tetapi melampirkannya pada pelayan).
Jom buat templat baharu dan daftarkan dialek pada pelayan:
sudo su postgres createdb postgistemplate createlang plpgsql postgistemplate Ini akan meminta kami memasukkan kata laluan pengguna.
Seterusnya, anda perlu mengisi templat dengan fungsi dan maklumat tentang jenis data.
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql psql d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-comments.sql Saya ingin ambil perhatian bahawa lokasi skrip mungkin berbeza sedikit, tetapi biasanya tidak lebih daripada 1-2 cawangan. Sekarang yang tinggal hanyalah untuk memulakan semula pelayan dan anda boleh mula bekerja. Untuk kejelasan, mari buat pelayan baharu menggunakan pgAdmin. Contoh apa yang berlaku ditunjukkan dalam rajah di bawah. Seperti yang anda lihat, terdapat dua templat: postgres dan postgistemplate yang kami buat.

Sejak universiti, saya bersumpah tidak akan terlibat dalam GIS dan semua yang berkaitan dengannya. Dan sejak zaman universiti yang sama, semua GIS ini sentiasa menghantui saya :) Pada salah satu pekerjaan saya sebelum ini, saya terpaksa bekerja dengan gabungan MapInfo + Oracle. Sekarang saya terpaksa mencuba projek sumber terbuka QuantumGIS + PostGIS.
Mari mulakan dengan memasang semua perkara ini.

Jadi, mengikut urutan.
QuantumGIS- sebenarnya analog percuma MapInfo atau ArcGIS. Butiran lanjut di Wikipedia
PostGIS- sambungan untuk PostgreSQL yang membolehkan anda menyimpan dan memproses data geospatial. Ini bermakna PostGIS dengan sendirinya tidak akan berfungsi. Dia memerlukan PostgreSQL. Hari ini adalah lebih baik untuk memasang PostgreSQL 9.1 (anda boleh melihat cara memasang dan mengkonfigurasinya dalam artikel saya).
Sehubungan itu, semua komponen lain mesti dipasang dengan mengambil kira versi PostgreSQL
pgRouting- satu set kaedah untuk mencari laluan terpendek menggunakan algoritma seperti Dijkstra dan . Butiran lanjut tentang kemungkinan boleh didapati di laman web projek

Memasang PostGIS dan QuantumGIS

Bagi mereka yang bekerja dengan GIS di Ubuntu ada repositori yang baik UbuntuGIS. Menambahnya adalah mudah:

Sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get kemas kini

Dalam repositori ini kami berminat dengan PostGIS dan QuantumGIS.

Sudo apt-get install postgresql-9.1-postgis
sudo apt-get install qgis

PostGIS dipasang sebagai sambungan kepada PostgreSQL. Oleh itu, untuk mencipta pangkalan data yang bertujuan untuk menyimpan dan memproses data geospatial, perlu menambah sambungan postgis ke pangkalan data sedia ada. Ini dilakukan dalam pgAdmin. Cari pangkalan data anda dalam pepohon, dan nod Sambungan di dalamnya dan tambah sambungan postgis di sana. Jika tiada sambungan sedemikian, cuba kemas kini cawangan dengan pangkalan data anda, dan jika itu tidak membantu, putuskan sambungan dan sertai pelayan sekali lagi.

Memasang pgRouting

Kami mengambil pgRouting daripada repositori pasukan Georepublic.

Sudo add-apt-repository ppa:georepublic/pgrouting
sudo apt-get kemas kini
sudo apt-get install postgresql-9.1-pgrouting

Pemasangan pgRouting pada SIM belum selesai. Ia adalah perlu untuk melaksanakan skrip khas dalam urutan tertentu.
Semua skrip terletak pada laluan /usr/share/postlbs/
Urutannya adalah seperti berikut:

  1. routing_core.sql
  2. routing_core_wrappers.sql
  3. routing_topology.sql
  4. matching.sql

Anda boleh membukanya dalam pgAdmin dan melaksanakannya di sana. Pada masa yang sama, anda boleh membiasakan diri dengan kandungan skrip ini.
Bagi mereka yang terlalu cool untuk cengkerang grafik;) mesti dilakukan urutan berikut arahan:

Psql -U postgres -f /usr/share/postlbs/routing_core.sql
psql -U postgres -f /usr/share/postlbs/routing_core_wrappers.sql
psql -U postgres -f /usr/share/postlbs/routing_topology.sql
psql -U postgres -f /usr/share/postlbs/matching.sql

Apabila menjalankan arahan ini, anda boleh menangkap ralat

Psql: FATAL: Pengesahan rakan sebaya gagal untuk "postgres" pengguna

Ini bermakna anda tidak boleh melaksanakan arahan ini pada pelayan kerana anda tidak mempunyai hak yang mencukupi. Beberapa kekeliruan mungkin timbul di sini: nampaknya perintah SQL dijalankan sebagai pentadbir postgres, tetapi pada masa yang sama tiada hak yang mencukupi. Masalahnya ialah arahan psql itu sendiri dilancarkan bagi pihak pengguna semasa anda, dan dia, sebaliknya, tidak boleh menyambung ke PostgreSQL (apatah lagi sebelum melaksanakan sebarang arahan). Terdapat jalan keluar dari situasi ini - jalankan psql sebagai pengguna postgres

Sudo -u postgres psql -U postgres -f /usr/share/postlbs/routing_core.sql

Skrip selebihnya dilancarkan dengan cara yang sama.
OK semuanya sudah berakhir Sekarang. Pada masa akan datang saya akan cuba menulis catatan tentang cara menggunakan semua perkara ini semasa mencari laluan terpendek(terutamanya kerana dokumentasi Rusia mengenai perkara ini sangat sukar dicari)

Bahan daripada Wiki - UserSide

Tempatan

Pastikan sistem anda ditetapkan kepada tempat yang akan digunakan dalam pangkalan data. Sebagai contoh, ru_RU.utf8

Jalankan arahan locale untuk melihat tempat lalai yang dipasang pada sistem. Jika anda bercadang untuk menggunakan locale selain daripada locale sistem dalam pangkalan data, pastikan ia ditambahkan pada sistem dengan menjalankan perintah locale -a. Pada akhirnya, adalah penting bahawa senarai tempat keluaran oleh arahan terakhir adalah tempat yang anda mahu gunakan dalam pangkalan data.

Jika selepas menjalankan locale anda yakin bahawa locale yang betul dipasang yang anda merancang untuk digunakan dalam pangkalan data, kemudian teruskan ke bahagian pemasangan.

Jika anda bercadang untuk menggunakan tempat pangkalan data yang sama dengan tempat lalai pada sistem, dan anda perlu menukar tempat tempat sistem untuk ini. Untuk melakukan ini, jalankan perintah sudo dpkg-reconfigure locales dan pilih locale yang diperlukan, kemudian pastikan ia dipasang pada sistem secara default locale.

Jika anda bercadang untuk menggunakan tempat pangkalan data selain daripada sistem satu dan ia tiada dalam senarai tempattempat yang dipasang, kemudian tambahkan nama tempat itu pada fail sudo nano /etc/locale.gen (atau hanya nyahkomen baris yang diperlukan) . Kemudian simpan fail dan jalankan arahan sudo locale-gen . Sahkan bahawa locale yang diperlukan telah ditambahkan dengan menjalankan perintah locale -a.

Memasang PostgreSQL

Arahan rasmi untuk menambah repositori dan memasang di bawah sistem yang berbeza boleh didapati di https://www.postgresql.org/download/

Arahan pemasangan untuk pengedaran Linux seperti Debian juga diterangkan di sini.

Repositori Debian standard mengandungi versi lama PostgreSQL. Untuk dapat memasang versi baru, anda perlu menambah repositori PostgreSQL rasmi. Jalankan:

Wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" sudo apt-get kemas kini sudo apt-get install postgresql-10

Ini melengkapkan pemasangan.

Menyediakan PostgreSQL

Beberapa tetapan digunakan untuk mengkonfigurasi fail konfigurasi terletak dalam direktori /etc/postgresql/10/main

Konfigurasi berikut bagi dua fail postgresql.conf dan pg_hba.conf hanya diperlukan jika USERSIDE dan DBMS PostgreSQL berada pada nod yang berbeza!

Jika DBMS dan USERSIDE berada pada nod yang sama, langkau terus ke bahagian seterusnya untuk mencipta pengguna dan pangkalan data.

postgresql.conf

Fail mengandungi tetapan pelayan PostgreSQL.

  1. Buka fail sudo nano /etc/postgresql/10/main/postgresql.conf
  2. Cari blok tetapan SAMBUNGAN DAN PENGESAHAN
  3. Nyahtandakan parameter listen_addresses dan tetapkan nilai kepada satu atau lebih alamat IP yang dipisahkan koma di mana pelayan menerima sambungan daripada klien. Simbol asterisk dibenarkan.

Anda boleh membaca lebih lanjut dalam dokumentasi rasmi: https://postgrespro.ru/docs/postgresql/10/runtime-config-connection.html

Kemudian mulakan semula pelayan sudo service postgresql restart

pg_hba.conf

Fail mengandungi tetapan untuk pengesahan pengguna dengan nama hos. Format fail ialah koleksi rekod, satu setiap baris, terdiri daripada beberapa medan yang dipisahkan oleh ruang. Butiran tentang persediaan fail ini boleh dibaca di pautan: https://postgrespro.ru/docs/postgrespro/10/auth-pg-hba-conf.html

  1. Buka fail sudo nano /etc/postgresql/10/main/pg_hba.conf
  2. Tambahkan baris di bahagian paling bawah yang membenarkan akses (nyatakan alamat IP nod yang USERSIDE dipasang)

hos sisi pengguna semua alamat IP-sisi pengguna md5

Kemudian baca semula konfigurasi arahan sudo muat semula perkhidmatan postgresql

Penalaan halus

Kami mengesyorkan membuat penalaan halus PostgreSQL DBMS, yang bergantung pada sumber pelayan anda. Memandangkan parameter mesti dipilih secara individu dalam setiap kes, kami sengaja tidak menerbitkan nilai disyorkannya di sini.

Anda boleh membiasakan diri dengan metodologi untuk menyediakan DBMS menggunakan pautan berikut:

Alat Konfigurasi:

Konfigurasi yang betul boleh meningkatkan prestasi DBMS dengan ketara, tetapi berhati-hati.

Mencipta pengguna dan pangkalan data

Dalam terminologi PostgreSQL, "pengguna" ialah peranan DBMS yang mempunyai kebenaran LOGIN (sambungan pangkalan data). Dalam manual ini, bukannya menggunakan SQL permintaan anda akan digesa untuk menggunakan arahan konsol.

Untuk membuat pengguna, jalankan arahan berikut (di sini sisi pengguna- nama pengguna pangkalan data):

Sudo -u postgres createuser userside -P

Sistem akan meminta kata laluan pengguna dicipta, yang mesti dimasukkan dua kali.

Sekarang buat pangkalan data. Pangkalan data sisi pengguna dicipta, pemiliknya adalah sisi pengguna.

Sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T template0 userside

Mendayakan sambungan PostGIS

Sambungan diperlukan untuk memproses jenis data geometri, yang merupakan objek pada peta.

Mula-mula anda perlu memasang sambungan PostGIS http://postgis.net/install/

Pemasangan pada Debian

Pada pengedaran seperti Debian, jalankan arahan

Sudo apt-get install postgis

Pemasangan pada FreeBSD

FreeBSD mempunyai port /usr/ports/databases/postgis

Selepas pemasangan anda perlu pergi ke folder

Cd /usr/local/share/postgresql/contrib/postgis-*

dan laksanakan di sana:

Sudo -u postgres psql -f "postgis.sql" sudo -u postgres psql -f "spatial_ref_sys.sql"

Mencipta Sambungan Pangkalan Data

Setelah PostGIS dipasang, anda perlu mendayakannya untuk pangkalan data sisi pengguna dengan cara berikut:

Sudo -u postgres psql -d userside -c "CREATE EXTENSION postgis"

Sambungan dipasang dan disambungkan ke pangkalan data sisi pengguna.

Kemas kini sambungan Postgis

Sila ambil perhatian bahawa jika anda mengemas kini komponen sistem Postgis, anda juga perlu mengemas kini sambungan itu sendiri di dalam pangkalan data seperti berikut:

Sudo -u postgres psql -d userside -c "ALTER EXTENSION postgis UPDATE"

Soalan Lazim

Ralat berlaku: Sudo: add-apt-repository: arahan tidak dijumpai.

Penyelesaian: sudo apt-get install software-properties-common

Ralat berlaku: Tidak dapat membuka fail kawalan sambungan "/usr/share/postgresql/10/extension/postgis.control"

Penyelesaian: Pasang komponen berikut:

Sudo apt install postgresql-10-postgis-2.4 postgresql-10-postgis-2.4-scripts