Lagi

Gunakan GeoServer sebagai sumber lapisan vektor di OpenLayers 3


Saya menggunakan PostGIS dan GeoServer dan OpenLayers 3 (OL3). Saya menghubungkan tabel PostGIS ke GeoServer dan menerbitkan layer saya. Saya menggunakan kode berikut untuk mendapatkan lapisan sebagai lapisan vektor:

var vector = new ol.layer.Vector({ source: new ol.source.GeoJSON({ proyeksi: 'EPSG:4326', url: 'http://localhost:8000/geoserver/cite/ows?service=WFS&version= 1.0.0&request=GetFeature&typeName=cite:myfeaturesTbl&maxFeatures=50&outputFormat=application/json&' }) });

Saya perlu membaca fitur saya sebagai lapisan vektor karena saya ingin memilihnya dan kemudian mendapatkan informasi dari setiap fitur atau memindahkannya di peta. Ketika saya menggunakan kode ini tidak menunjukkan apa-apa.

Apakah ada masalah dalam kode saya?

Bisakah Anda membantu saya mendapatkan lapisan vektor di OL3 dengan GeoServer WFS?


Masalahnya terletak pada penggunaan Anda dariurl, yang di OL3 tampaknya hanya mengharapkan file statis, yaituurl = "/static/data/geojson.json".

Untuk mengisi peta Anda dengan data yang dimuat secara dinamis, gunakan panggilan ajax danol.source.Vector.addFiturmetode:

var vectorSource = new ol.source.GeoJSON({ proyeksi: 'EPSG:4326' }), $.get( '/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=cite:myfeaturesTbl&maxFeatures=50&outputFormat=aplikasi /json' // sukses callback function (data) { // pertama tambahkan fitur vectorSource.addFeatures(vectorSource.readFeatures(data)); // lalu tampilkan peta… var map = new ol.Map({ target: '… ', lapisan: [ new ol.layer.Tile({ source:… }), new ol.layer.Vector({ source: vectorSource }) }); } );

Open Source Map Viewer dibangun menggunakan React, OpenLayers dan GeoServer.

Saya bekerja untuk County Simcoe di Ontario, Kanada dan kami telah menjadi toko ESRI selama 20 tahun terakhir (Portal On Premise, banyak Server AGS, dll) tetapi biaya lisensi produk server kami telah meningkat secara signifikan. Jadi Direktur saya menugaskan saya untuk mencoba membangun kembali aplikasi web yang menghadap publik kami yang ada di Open Source. Saat ini dibangun di atas 3.x JS API menggunakan WAB - Web App Builder.

Setelah beberapa penelitian, saya menggunakan React, OpenLayers, GeoServer, dan DB PostGres. Saya mengambil kartu dari WAB dan merancang jenis kerangka kerja yang sama yang memungkinkan pengembang untuk memperluasnya dengan komponen mereka sendiri dan memuatnya berdasarkan konfigurasi (Alat dan Tema).

Aplikasi ini TIDAK lengkap tetapi seharusnya pada awal 2020. Ada cukup banyak sehingga Anda dapat memahami desain/konsep. Saya memposting apa yang saya miliki sekarang hari ini di GitHub, serta proyek pendukung (Umpan Balik, WebAPI, dll). Saya sangat berharap Anda yang bekerja di toko ESRI melihat apa yang mungkin terjadi di OpenSource. Sejujurnya, saya telah meminum ESRI Kool-Aid sepanjang karir saya dan mengejutkan diri saya sendiri dengan yang satu ini.

Saya harap seseorang menemukan ini berguna atau bahkan membayangkan menggunakan ini di organisasi mereka sendiri. Setiap umpan balik/pertanyaan dipersilakan.


11.1. Menginstal dan Mengonfigurasi¶

Webapp GeoServer harus diinstal sebagai saudara dari Metacat. Jika Anda TIDAK ingin menjalankan GeoServer, penerapan dapat dilewati, tetapi skin apa pun yang menggunakan peta tidak akan ditampilkan dengan benar. (CATATAN: Geoserver merekomendasikan menggunakan pengaturan ruang PermGen minimal 128MB.).

Metacat dilengkapi dengan direktori data yang telah dikonfigurasi sebelumnya untuk digunakan oleh GeoServer. Ini termasuk lapisan dasar negara-negara dunia dan konfigurasi default yang sudah mengetahui cache spasial Metacat. Antarmuka konfigurasi Metacat digunakan untuk mengkonfigurasi GeoServer untuk menggunakan direktori data bersama ini. Untuk mengkonfigurasi GeoServer lebih lanjut, gunakan utilitas konfigurasi berbasis Web, yang tersedia di: http://your.server.com/<geoserver_context> (mis., http://knb.ecoinformatics.org/geoserver).

Tugas konfigurasi umum meliputi:

  • Menambahkan Peta ke Halaman Web atau Skin
  • Mengonfigurasi Ukuran dan Luas Awal Peta
  • Mengonfigurasi Tata Letak Antarmuka Pemetaan HTML
  • Mengonfigurasi “Menu Drop-down Pilih Lokasi
  • Konfigurasi Penggambaran Visual Data Geospasial (misalnya, simbologi dan warna)
  • Menambahkan Kumpulan Data Spasial Lainnya ke Peta Web

Antarmuka administratif berbasis Web GeoServer.

Catatan: Beberapa konfigurasi mungkin perlu dibuat untuk file XML juga.

OpenLayers, yang digunakan Metacat sebagai front-end untuk layanan WMS GeoServer, menyediakan komponen antarmuka atau "widget" (misalnya, peta, zoom kotak, daftar lapisan, menu tarik-turun "Pilih Lokasi", bilah skala, lintang/bujur koordinat, dan formulir kueri) yang memudahkan penerapan aplikasi pemetaan berbasis web dengan pengkodean minimal.

OpenLayers memiliki tiga file konfigurasi utama yang digunakan untuk menyesuaikan antarmuka peta. Konfigurasi default ada di:

Dokumen Lokasi Keterangan
File lokasi bernama lokasi.jsp Daftar lokasi yang telah ditentukan sebelumnya (nama dan batas lintang/bujur)
Fungsi rendering peta utama maps.js Mendefinisikan peta, widget, dan perilakunya
Peta yang dirender dan tata letak halaman peta.jsp Memuat peta dan mengontrol tata letak HTML widget.

CATATAN: Secara default, pertama kali Metacat di-restart, ia menghasilkan "cache spasial" yang berisi informasi geografis tentang dokumen dalam repositori. Perilaku default ini ditentukan di lib/metacat.properties, di mana parameter regenerateCacheOnRestart disetel ke true. Informasi dalam cache spasial disimpan dalam format yang kompatibel dengan GIS (ESRI Shapefile) dan terdiri dari nama dokumen dan cakupan geografisnya. Saat dokumen dimasukkan, dihapus, dan diperbarui di repositori Metacat, Metacat secara otomatis menyinkronkan cache spasial untuk mencerminkan perubahan. Karena menghasilkan cache dapat memakan banyak waktu (beberapa menit untuk beberapa ribu dokumen), Metacat mengatur ulang properti regenerateCacheOnRestart ke false setelah cache spasial dibuat. Perhatikan bahwa jika Anda meningkatkan atau menginstal ulang Metacat, cache spasial akan dibuat ulang lagi.

11.1.1. Menambahkan Peta ke Halaman Web atau Skin¶

Untuk menambahkan peta ke halaman Web, cukup sertakan antarmuka peta menggunakan iframe:

URL peta, /metacat/style/common/spatial/map.jsp , adalah antarmuka peta default. Jika Anda berencana untuk menyesuaikan antarmuka peta, salin file map.jsp ke direktori skin Anda (baik direktori skin default atau kustom).

Anda dapat mengakses peta yang disesuaikan dengan URL: /metacat/style/skins/<myskin>/spatial/map.jsp

11.1.2. Mengonfigurasi Ukuran dan Luas Awal Peta¶

Sebelum Anda mengonfigurasi ukuran dan luas awal peta, pastikan Anda telah menyalin halaman tata letak peta ke direktori skin Anda (Lihat Mengkonfigurasi Metacat untuk petunjuk arah). Setelah file disalin, Anda dapat mengubah tingkat awal peta di: $/spasial/map.jsp .

Untuk mengubah luas awal peta, edit kotak pembatas. Standarnya adalah menampilkan seluruh globe. Fungsi initMap() juga harus diberi nama skin sehingga hasil pencarian spasial dapat ditata dengan benar.

Ukuran (tinggi/lebar) peta dapat dikontrol dengan entri CSS #map yang disertakan di halaman map.jsp.

11.1.3. Mengonfigurasi Tata Letak Antarmuka Pemetaan HTML¶

Ukuran dan luas awal peta dapat diedit di : $/spasial/map.jsp.

Map.jsp adalah wadah sederhana yang dapat dimasukkan ke halaman lain yang lebih kompleks jika diinginkan. Ini berisi peta, widget, dan daftar dropdown lokasi.

11.1.4. Mengonfigurasi Menu Drop-down “Pilih Lokasi”¶

Lokasi yang muncul di menu tarik-turun "Pilih Lokasi" ditentukan dalam file location.jsp. Locations.jsp dapat disalin dari template spasial umum ke direktori skin Anda. Setiap lokasi didefinisikan sebagai tag HTML <option/>. Edit nilai dan label untuk mengedit atau menambahkan lokasi baru.

11.1.5. Konfigurasi Penggambaran Visual Data Geospasial (misalnya, simbologi dan warna)¶

Kumpulan data geospasial ditata melalui penggunaan Styled Layer Descriptors (SLD). SLD default yang digunakan untuk titik data dan kotak pembatas data berada di /lib/spatial/geoserver/data/styles/ dan masing-masing diberi nama data_points_style.sld dan data_bounds_style.sld.

Anda dapat menemukan tutorial yang lebih mendetail tentang penggunaan SLD dengan GeoServer di dokumentasi GeoServer:

11.1.6. Menambahkan Kumpulan Data Spasial Lainnya ke Peta Web¶

Jika Anda memiliki kumpulan data GIS vektor, seperti informasi cuaca atau topografi, di server yang ingin Anda sertakan dalam peta interaktif, Anda harus terlebih dahulu mendaftarkan kumpulan data tersebut ke GeoServer. Setelah kumpulan data terdaftar, Anda dapat menambahkan lapisan ke peta. Anda juga dapat menambahkan lapisan spasial yang telah tersedia untuk umum melalui WMS (Ada ratusan kumpulan data spasial yang tersedia. Lihat wms-sites.com untuk katalog yang bagus). Petunjuk untuk menambahkan lapisan yang tersedia untuk umum disertakan di akhir bagian ini.

Untuk mendaftarkan kumpulan data dan menambahkannya ke peta:

  1. Arahkan browser Anda ke http://your.server/geoserver , masuk ke GeoServer, dan navigasikan ke halaman konfigurasi “Data Stores” di bawah Data > Stores .
  2. Buat sumber data vektor baru dari Shapefile di ruang kerja "metacat".

Membuat shapefile baru menggunakan antarmuka administratif berbasis web GeoServers.

  1. Deskripsi, jika ditentukan, sebagian besar digunakan secara internal untuk memberikan informasi kepada administrator lain tentang DataStore. Klik Kirim.
  2. Navigasikan ke halaman konfigurasi “Lapisan” di bawah Lapisan > Data. Tambahkan Layer baru dari sumber data baru Anda.
  3. Anda juga harus menentukan nomor sistem referensi spasial (SRS) untuk layer baru. Sebagian besar data lat/long adalah “4326”. Jika data Anda berada dalam proyeksi lain, tentukan sistem referensi spasialnya menggunakan tautan bantuan yang disediakan.

Konfigurasi FeatureType GeoServer. Pengaturan SRS yang dibahas pada langkah 5 disorot.

  1. Gaya lapisan menggunakan gaya dari menu tarik-turun pada tab Penerbitan, atau buat SLD baru untuk membuat objek gaya baru dan SLD yang sesuai (opsi ini memberikan kontrol lebih besar atas gaya).
  2. Cobalah kumpulan data bergaya sebagai lapisan WMS menggunakan Pratinjau Lapisan.

Pratinjau Lapisan GeoServer memungkinkan Anda melihat rendering OpenLayer dari lapisan baru.

  1. Salin file map.js default yang merakit peta di OpenLayers ( style/common/spatial/map.js ) ke direktori spasial skin Anda.
  2. Edit metode init() untuk menyertakan lapisan baru Anda di peta - baik sebagai overlay atau sebagai lapisan dasar.
  3. Arahkan browser Anda ke antarmuka peta. Lapisan baru Anda akan muncul dengan yang sudah ada.

11.1.7. Menambahkan Data Spasial Eksternal yang Tersedia untuk Publik melalui WMS¶

Ada ratusan sumber data spasial yang tersedia untuk umum melalui WMS (lihat http://wms-sites.com untuk katalog yang bagus). Untuk menambahkan sumber data ini ke peta Anda, tambahkan lapisan di file spasial/map.js kulit Anda.


Indiemaps.com/blog

Saya senang melakukan lebih sedikit Flash dan lebih banyak pengembangan JavaScript akhir-akhir ini. Secara khusus, saya telah menyelidiki dua platform pemetaan web JavaScript open-source: satu lama, OpenLayers, dan satu baru, Polymaps.

OpenLayers telah ada sejak lama, tetapi masih berkinerja sangat baik sebagai kerangka kerja peta yang licin sambil memungkinkan penyesuaian peta tematik yang mudah. Polymaps benar-benar baru (dari Stamen sehingga Anda tahu itu akan membuat Anda terkejut), tetapi luar biasa untuk memungkinkan kustomisasi tematik berbasis web dari lapisan geografis yang dimuat melalui GeoJSON atau KML ke “ubin vektor yang dirender dengan SVG”.

Dalam posting ini saya menunjukkan bagaimana OpenLayers atau Polymaps dapat digunakan untuk membuat kartogram noncontiguous yang dinamis dan dapat disesuaikan dengan kode yang sangat sedikit.

Di atas adalah kartogram pengaruh pemilihan negara bagian dari tahun 2007 oleh NY Times

Saya telah menulis tentang gadis-gadis ini sebelumnya. Formulir melibatkan fitur pengubahan ukuran (seperti negara bagian atau negara) relatif terhadap nilai atribut unit dalam bidang tertentu (seringkali populasi). Tidak seperti bentuk kartogram yang lebih umum dan bersebelahan, kartogram yang tidak berdekatan tidak berusaha mempertahankan topologi, tetapi karena itu bebas untuk memelihara membentuk sempurna dan bereksperimen dengan posisi, seperti pada contoh di atas.

Berikut adalah contoh dari artikel asli Judy Olson tahun 1976 tentang formulir kartogram ini.

Lihat posting lama saya atau artikel Olson untuk info lebih lanjut tentang teknik dan teori di baliknya. Olson menghasilkan gambar di atas secara semi-manual menggunakan proyektor — setiap keadaan diproyeksikan pada faktor penskalaan yang tepat dan kemudian dilacak. Di bawah ini saya tunjukkan bagaimana melakukan hal yang kurang lebih sama, tetapi dengan JavaScript dan OpenLayers atau Polymaps.

Penerapan

Saya ingin dapat memuat file geodata poligonal apa pun (didukung oleh kerangka kerja pemetaan web yang dipilih) dan mengubah ukuran fitur berdasarkan atribut numerik apa pun untuk membentuk kartogram yang tidak bersebelahan. Keuntungan menerapkan ini dalam kerangka kerja pemetaan web jelas bahwa lapisan data tambahan dari berbagai sumber dapat dengan mudah di-over atau underlain.

Sebagai uji dan bukti konsep untuk kedua kerangka kerja, saya ingin mereproduksi grafik Olson (di atas) sebaik mungkin dengan cukup mudah. Olson menggunakan data Sensus 1970 untuk menunjukkan jumlah orang berusia 65+ menurut negara bagian. Di sini saya memperbaruinya dengan perkiraan data 2009. Secara khusus, saya akan memuat lapisan data Geocommons yang diunggah tahun lalu.

Saya telah bekerja dengan OpenLayers selama sekitar setengah tahun jadi saya menerapkan kartogram di sana terlebih dahulu.

OpenLayers

Menerapkan kartogram yang tidak bersebelahan di OpenLayers cukup mudah, berkat metode bermanfaat yang disediakan oleh kerangka kerja komprehensif ini. Langkah pertama adalah memuat geodata.

Muat geodata

OpenLayers membuat pemuatan geodata cukup mudah, perpustakaan dapat mengurai WKT, GML, KML, GeoJSON, GeoRSS, dll. Untuk semuanya, kita akan menggunakan kelas Layer.Vector. Dalam hal ini saya akan memuat dalam versi KML dari Geocommons, dan oleh karena itu pengurai Format.KML OpenLayer.

Kartogram yang tidak bersebelahan tidak memerlukan proyeksi geografis — terlepas dari proyeksi garis asli, fitur masih dapat ditingkatkan atau diturunkan secara akurat untuk membentuk kartogram. Jadi satu-satunya alasan untuk proyeksi adalah estetika dan untuk meningkatkan pengenalan fitur. Saya tidak yakin proyeksi apa yang digunakan Olson, tetapi saya hanya menggunakan klasik lama, Albers Equal Area. Secara khusus, saya menggunakan Proj4js dan definisi berikut:

Proj4js.defs["MY_ALBERS"] = “+proj=aea +lat_1=32 +lat_2=58 +lat_0=45 +lon_0=-97 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 + unit=m +no_defs”

Untuk menerapkannya, saya hanya membuat OpenLayers.Projection baru yang akan diterapkan ke peta saat itu dipakai. Thematicmapping.org memiliki info lebih lanjut tentang proyeksi dan OpenLayers.

Kecuali jika Anda sudah mengetahui nilai maksimum dari atribut apa pun yang Anda petakan, Anda harus mengulang semuanya sekali sebelum Anda dapat mengulanginya lagi untuk menskalakan. Atribut dapat diakses melalui properti atribut dari setiap OpenLayers.Feature.Vector (dapat diakses melalui properti features dari OpenLayers.Layer.Vector ).

Fitur skala

Untuk menskalakan fitur poligonal untuk kartogram yang tidak bersebelahan, kita harus mengetahui:

  1. nilai fitur untuk atribut tematik yang dipilih (lihat di atas)
  2. area fitur dan centroid seperti yang dirender

OpenLayers membuat ini mudah diakses. Setiap objek geometri fitur memiliki metode getArea dan getCentroid. Sejauh yang saya tahu, fungsi getCentroid mengembalikan pusat massa poligonal yang sebenarnya, dan bukan hanya pusat kotak pembatas fitur.

area yang diinginkan = ( nilai / maxValue ) * maxArea

skala yang diinginkan = Math.sqrt(Area yang diinginkan/Area asli)

Skala ini kemudian diterapkan melalui metode pengubahan ukuran geometri setiap fitur.

feature.geometry.resize (skala yang diinginkan, centroid)

Hasil

Berikut adalah gambar dari contoh yang dapat Anda temukan di halaman ini. Semua sumber hanya dapat diakses dari sana.

Hei, itu terlihat sangat bagus. Michigan agak di luar pusat, tapi saya yakin itu karena poligon hanya ditentukan oleh satu cincin koordinat, meskipun itu harus multipoligon. Mungkin yang lebih terlihat adalah tumpang tindih di Timur Laut. Dalam contoh asli Judy Olson, negara bagian diledakkan oleh proyektor visual dan kemudian dilacak. Tapi proyektor bisa diarahkan sebelum menelusuri, sehingga menghindari tumpang tindih. Dalam hal ini saya hanya menskalakan status dan menyimpannya di centroid aslinya.

Saya dapat menghindari tumpang tindih dengan menentukan pemosisian yang tepat dan menyetelnya di dalam OpenLayers (tetapi tumpang tindih akan sangat sulit untuk ditentukan dan kemudian ditangani secara dinamis) atau dengan secara signifikan mengurangi area maksimum yang dapat dikonfigurasi yang diizinkan pada kartogram yang dihasilkan (tetapi untuk memastikan Anda mencegah fitur tumpang tindih harus diskalakan cukup kecil, yang akan mengurangi keterbacaan kartogram).

Polimap

Polymaps adalah pustaka pemetaan JavaScript yang cukup baru oleh Stamen dan SimpleGeo. Geocommons baru-baru ini memperkenalkan Polymaps ke layanan pemetaan online mereka, menciptakan alat pemetaan tematik online bebas Flash yang cukup kuat. Membuat kartogram yang tidak bersebelahan di Polymaps sedikit lebih sulit daripada proses yang dijelaskan di atas, hanya karena perpustakaannya sangat ringan.

Muat geodata

Langkah pertama cukup mudah. Sejauh format geodata vektor, Polymaps hanya memiliki dukungan bawaan untuk GeoJSON, meskipun mereka memberikan contoh KML yang memanfaatkan metode pengambilan opsional yang ditentukan dalam konstruktor lapisan GeoJSON.

Tapi saya hanya akan menggunakan GeoJSON untuk yang ini. Saya menemukan dalam posting ini dari GeoIQ bahwa saya dapat mengakses fitur versi GeoJSON di kumpulan data Geocommons apa pun dengan membuka titik akhir “features.json”. Jadi untuk perkiraan dataset sensus 2009 saya, saya akan memuat di http://geocommons.com/overlays/55629/features.json?geojson=1 menggunakan metode sederhana berikut:

Perhatikan bahwa memuat langsung dari Geocommons hanya berfungsi saat mengembangkan secara lokal karena kebijakan lintas domain. Jadi dalam contoh saya yang sudah selesai, saya akhirnya memuat versi lokal JSON.

Polymaps terbatas pada proyeksi Web Mercator untuk ditampilkan, tetapi kami masih dapat menghasilkan reproduksi asli Olson yang lumayan.

Seperti pada contoh OpenLayers di atas, kecuali Anda sudah mengetahui nilai maksimum atribut Anda, Anda harus mengulang fitur terlebih dahulu untuk menentukannya. Dalam kode di atas, Anda dapat melihat saya menggunakan metode lapisan untuk mendengarkan acara “load”. Dan di sana saya bisa mendapatkan fitur saya dari properti fitur objek acara. Atribut disimpan pada properti data.properties setiap fitur.

Fitur skala

Untuk menskalakan setiap fitur, pertama-tama kita harus mengetahui nilainya dalam atribut yang dipilih (lihat di atas). Kemudian kita perlu menentukan area saat ini (dalam piksel) untuk mengetahui area yang diinginkan fitur pada kartogram akhirnya. OpenLayers menyediakan metode yang nyaman untuk ini tetapi di Polymaps kita harus menggulungnya sendiri karena Mike Bostock ini (salah satu penulis utama Polymaps) sangat membantu. Untuk menghitung luas setiap fitur, saya hanya memerlukan akses ke daftar koordinat yang diproyeksikan (maka saya dapat menggunakan teknik dasar yang dirinci di sini). Tuan Bostock mengarahkan saya ke properti pathSegList dari antarmuka SVGPathElement. pathSegList memperlihatkan daftar segmen jalur dengan antarmuka SVGPathSeg. Mike berkata saya dapat mengandalkan segmen ini sebagai salah satu dari jenis “M” (pindah ke), “L” (baris ke), atau “Z” (baris akhir). Dengan informasi ini saya dengan cepat menyusun metode yang akan mengembalikan area yang diproyeksikan dari SVGPathElement apa pun yang dapat dihasilkan oleh Polymaps.

fungsi getPathArea ( segList )
{
luas var = 0
var seg1, seg2
var nPts = segList. jumlahItem

// mari kita lihat apakah item terakhir adalah 'Z' (seharusnya)
var lastLetter =
segList. getItem ( nPts - 1 ) . pathSegTypeAsLetter
jika ( Surat terakhir. toLowerCase ( ) == 'z' )
nPt --
var j = nPts - 1
segItem_list:
untuk ( var i = 0 i < nPts j=i++ )
{
seg1 = segList. getItem ( saya )
seg2 = segList. getItem ( j )
luas += ruas1. x * segmen2. kamu
luas -= ruas1. y * segmen2. x
}
luas /= 2
kembali Matematika. perut ( )
}

Saya dapat dengan mudah membuat metode centroid serupa, tetapi saya malas dan memutuskan untuk hanya menggunakan bagian tengah kotak pembatas setiap fitur (dapat diakses melalui metode getBBox elemen SVG masing-masing fitur).

Area dan skala yang diinginkan dihitung seperti yang kita lakukan di atas di OpenLayers:

area yang diinginkan = ( nilai / maxValue ) * maxArea
skala yang diinginkan = Math.sqrt(Area yang diinginkan/Area asli)

Skala kemudian diterapkan melalui atribut ‘transform' dari setiap elemen SVG baik skala maupun terjemahan xy harus didefinisikan dalam atribut ‘transform':

Hasil

Seperti sebelumnya, inilah gambar yang diambil dari contoh yang dapat Anda temukan di halaman ini. Anda akan melihat sedikit kode di sana, tetapi harap ‘lihat sumber' untuk melihat semua kode dan markup.

Selain perbedaan proyeksi yang diperlukan, hal utama yang menonjol adalah tumpang tindih di Timur Laut. Saya membahas kemungkinan cara untuk menghindari ini dalam contoh OpenLayers di atas.

Kesimpulan

Tidak ada yang baru di sini. Saya telah melakukan ini di Flash untuk sementara waktu — lihat di sini dan di sini dan tentu saja Judy Olson melakukannya sekitar 35 tahun yang lalu. Tapi senang melihatnya bekerja secara dinamis di beberapa open source, perpustakaan yang sesuai standar web. Terima kasih kepada OpenLayers, Polymaps, dan Geocommmons yang telah memungkinkannya!

8 Komentar

Anda dapat melakukan hal yang sama menggunakan SLD dan filter Java sederhana menggunakan GeoServer. Lihat http://ian01.geog.psu.edu/geoserver/www/cartogram/discontinous.html untuk contoh dan detailnya.

Apakah Anda menghapus tautan pertama ke server untuk pengujian? Di mana lagi kami dapat menguji atau apakah ada petunjuk tentang cara mengatur lingkungan ini secara lokal dan menguji?

Satu pertanyaan lain. Bagaimana cara mengatur lingkungan untuk menguji dan menjalankan ini? Terima kasih

Hai terima kasih atas bimbingan Anda pada posting ini sangat membantu, kami telah mencoba mencari informasi untuk sementara waktu dan ini bagus untuk kami pahami, mencari radio yang sesuai dengan yang kami butuhkan tidak sederhana. Terima kasih lagi

Tulis lebih banyak, itu saja yang bisa saya katakan. Secara harfiah, sepertinya Anda mengandalkan video untuk menyampaikan maksud Anda. Anda pasti tahu apa yang Anda bicarakan, mengapa menyia-nyiakan kecerdasan Anda hanya dengan memposting video ke situs Anda ketika Anda bisa memberi kami sesuatu yang mencerahkan untuk dibaca?

Teksnya tentu sangat kuat yang kemungkinan besar merupakan alasan mengapa saya berusaha untuk berkomentar. Saya tidak menjadikannya kebiasaan rutin untuk melakukan itu. Kedua, meskipun saya dapat dengan mudah melihat lompatan alasan yang Anda kemukakan, saya tidak begitu yakin bagaimana Anda tampaknya menghubungkan detail Anda yang pada gilirannya membantu membuat kesimpulan Anda. Untuk saat ini saya pasti akan berlangganan posisi Anda tetapi berharap di masa mendatang Anda menghubungkan fakta Anda dengan lebih baik.

Kami tidak spesifik di mana Anda akan memiliki data Anda, setelah mengatakan tema yang bermanfaat itu. Saya perlu meluangkan waktu untuk menguasai lebih banyak serta menyadari lebih banyak. Terima kasih atas informasi yang sangat baik Saya mencari detail ini untuk tujuan saya.

Hanya ingin tahu jika Anda telah mencoba sesuatu yang lebih sederhana - mengindeks nilai yang ingin Anda tampilkan di kartogram sehingga status dengan nilai terbesar adalah 100% (yaitu mempertahankan ukuran saat ini) dan menyesuaikan semua persentase ukuran status relatif ke basis ini, lalu buffering isi perut? Negara bagian dengan persentase terkecil mungkin menghilang, tetapi mungkin akan mempertahankan posisi dan tidak ada tumpang tindih yang menyebabkan Anda mengurangi ukuran. Tapi mungkin jika ada perbedaan besar antara nilai tertinggi/terendah, saya kira mungkin hanya menunjukkan satu keadaan dan yang lainnya menghilang…menjadi sangat kecil…?

5 Trackback

[. ] indiemaps.com/blog » Kartogram tidak bersebelahan di OpenLayers dan Polymaps indiemaps.com/blog/2011/02/noncontiguous-cartograms-in-openlayers-and-polymaps/ &ndash melihat halaman &ndash di-cache Saya senang melakukan lebih sedikit Flash dan lebih banyak pengembangan JavaScript akhir-akhir ini. Secara khusus, saya telah menyelidiki dua platform pemetaan web JavaScript open-source: satu lama, OpenLayers, dan satu baru, Polymaps. Hanya tampilkan berpengaruh (1) $('#filter-infonly').change(function() < var el = $(this) var url = document.location.href var check = el.attr('checked') if ( dicentang) < document.location.href = url + ((/?/.test(url)) ? ‘&' : ‘?') + ‘infonly=1′ >else < document.location .href = url.replace(/[?&]?infonly=1/,”) >>) [. ]

[. ] sangat luar biasa, bagaimana dengan ini? Kartogram yang tidak bersebelahan di OpenLayers dan Polymaps 1. OpenLayers + Polymaps 2 adalah kombinasi yang unggul. Tuhan memberkati Ian Turton karena mendorong [. ]

[. ] Kartogram noncontiguous di OpenLayers dan Polymaps [. ]

[. ] Saya menemukan karyanya tiga tahun lalu, dan tidak ada salahnya untuk menyanjung kami dengan blogging tentang beberapa peretasan keren menggunakan API kami. Saya sangat senang bergabung dengan tim pengembangan GeoIQ sebagai Insinyur Visualisasi. NS [. ]

[. ] melihat OL digunakan untuk pemetaan tematik dalam choropleth dan aplikasi simbol proporsional pada tahun 2008. Saya menambahkan kartogram yang tidak bersebelahan ke dalam campuran terakhir [. ]


GeoServer 2.17.3 Dirilis

Kami dengan senang hati mengumumkan rilis GeoServer 2.17.3 dengan unduhan ( war | bin ), dokumentasi dan ekstensi.

Rilis ini dibuat bersama dengan GeoTools 23.3 dan GeoWebCache 1.17.3. Ini adalah rilis pemeliharaan yang direkomendasikan untuk sistem produksi.

Terima kasih kepada semua orang yang berkontribusi, dan Alessandro Parma, Andrea Aime (GeoSolutions) untuk membuat rilis ini.

Perbaikan dan Perbaikan

Rilis ini mencakup sejumlah perbaikan. Peningkatan penting:

  • SLDService sekarang dapat mengiklankan metode klasifikasi yang didukung (untuk klien pemeriksaan di masa mendatang, jika metode baru ditambahkan nanti). Metode klasifikasi berbasis standar deviasi baru telah ditambahkan.
  • Skema aplikasi yang menghasilkan keluaran fitur sederhana (pemetaan murni) sekarang dapat digunakan dengan semua format fitur sederhana yang umum juga, seperti shapefile, CSV, KML, dan sebagainya.
  • Dimungkinkan untuk menonaktifkan pelengkapan otomatis dari login UI
  • Importir telah dioptimalkan untuk menghindari pemindaian direktori penuh saat mengimpor file tunggal. Ini ditambah dengan pengoptimalan serupa dalam pemanenan mosaik gambar, mempercepat pemanenan file baru secara signifikan melalui importir, ketika terdapat dalam direktori yang memiliki banyak file.
  • Keluaran ubin vektor sekarang dapat memperoleh manfaat penuh dari sumber data pra-umum, membaca fitur pada resolusi yang diperlukan untuk menghasilkan ubin vektor (sebelumnya menggunakan resolusi tertinggi yang tersedia).
  • Transformasi proses/rendering Jiffle sekarang dapat menghasilkan output multi-band, dan kinerjanya menerima beberapa peningkatan.

Perbaikan yang disertakan dalam rilis ini:

  • Manajemen memori sumber GDAL raster telah ditingkatkan.
  • Pratinjau lapisan dengan kepatuhan WMS yang ketat tidak berfungsi lagi, ini telah diperbaiki.

Untuk informasi lebih lanjut, periksa catatan rilis 2.17.3.

Pembaruan Komunitas

Untuk pengembang yang membangun dari sumber, modul komunitas kami adalah tempat yang tepat untuk berkolaborasi dalam fungsionalitas dan peningkatan.


Bagaimana Menghubungkan SAP HANA dengan GeoServer

Sementara SAP HANA dan fitur spasialnya dapat digunakan dengan banyak alat GIS (Sistem Informasi Geografis) pihak ketiga. Satu pertanyaan penting adalah bagaimana menghubungkan SAP HANA dengan alat-alat ini. Ini mungkin sangat berbeda dari alat ke alat dan kadang-kadang juga menjadi semacam informasi tersembunyi, terutama ketika kemungkinan dan dukungan untuk alat tertentu baru dan baru. Di blog ini saya membahas detail cara menghubungkan SAP HANA dengan GeoServer.

SAP HANA dapat digunakan di GeoServer sebagai penyimpanan data. http://docs.geotools.org/latest/userguide/library/jdbc/hana.html menjelaskan dalam beberapa hal bahwa ini mungkin. Kami akan memberikan detailnya di blog ini untuk lingkungan MS Windows 10 dan GeoServer 2.15.0.

Terapkan Plug-In HANA untuk GeoServer: Buka https://mvnrepository.com/artifact/org.geotools.jdbc/gt-jdbc-hana/21.0 dan klik tombol tepat di samping “File” untuk mengunduh file gt-jdbc-hana-21.0.jar.

Salin filenya gt-jdbc-hana-21.0.jar ke direktori …GeoServer 2.15.0webappsgeoserverWEB-INFlib dari instalasi GeoServer.

Setelah melakukan ini juga HANA JDBC ngdbc.jar driver harus disalin ke direktori yang sama.

Kamu dapat menemukan ngdbc.jar di direktori C:Program FilesSAPhdbclient dari instalasi hdbclient lingkungan Anda.

Setelah melakukan ini, restart geoServer dan Anda akan menemukan SAP HANA sebagai sumber data vektor lebih lanjut di Server Geo di bawah Toko –> Tambahkan toko baru:

Tentukan Sumber Data Vektor untuk SAP HANA: Kami hanya akan menjelaskan parameter koneksi ke database HANA saat membuat toko di GeoServer. Sebagai prasyarat, Anda juga harus sudah memiliki ruang kerja. Untuk detail cara membuat ruang kerja dan tutorial umum untuk GeoServer, lihat mis. https://geoserver.geo-solutions.it/edu/en/.

Di lingkungan multi-penyewa, Anda harus menyatakan nama database penyewa dan nomor instans di bagian bawah topeng entri. Ingatlah bahwa sebagai alternatif TIDAK berfungsi untuk menggunakan SQL-Port dari penyewa masing-masing dan membiarkan database kosong. Port lapangan adalah wajib, tetapi tidak dipertimbangkan. Parameter koneksi yang tersisa harus cukup jelas.

Dalam contoh ini database penyewa saya disebut SPL dan ada skema database yang disebut HACKT25.

Anda sekarang dapat membuat layer baru di GeoServer melalui Lapisan –> Tambahkan lapisan baru dan periksa silang apa yang Anda lihat di sini dengan apa yang Anda miliki di basis data HANA jarak jauh Anda.

Kesimpulannya kita melihat bahwa bagian utama adalah menemukan tempat untuk mengunduh plug-in Hana yang tepat dan kedua untuk mengetahui apa yang diminta oleh properti koneksi dari penyimpanan data di GeoServer.


Lapisan Vektor dan IE

Menggunakan Javascript OpenLayers dari modul OpenLayers dapat menimbulkan beberapa masalah dengan rendering lapisan vektor di IE.

Akar penyebab masalah:

Internet Explorer memiliki sesuatu yang disebut VML: Vector Markup Language, yang digunakan untuk menggambar grafik. VML adalah apa yang Anda gunakan di IE: canvas4ie sangat lambat, google maps menggunakan VML untuk menggambar rute, dan OpenLayers menggunakannya untuk menggambar vektor.

Elemen VML ditata dengan membuat gaya seperti CSS di namespace. OpenLayers membuat ol: namespace dan kemudian membuat gaya seperti ol:line ol:circle, dll.

Untuk melakukan ini, ia harus mengakses document.namespaces. Document.namespaces tidak selalu ada: terutama, Anda tidak dapat bergantung padanya sebelum document.ready.

Tapi, terkadang document.namespaces *ada* sebelum document.ready dan itulah yang mengacaukan pandangan dunia saya. Jadi, teori itu, ada mode. Sesuatu dalam HTML dapat mencegah document.namespaces diisi sebelum document.ready.

$( atau $(dokumen).siap()

  • Jika ada gambar yang rusak pada halaman, maka ruang nama tidak diisi.
  • Jika halaman tidak memiliki gambar yang rusak, maka document.namespaces dapat diakses

Dokumen.load()

31 lembar gaya

IE tidak dapat menangani lebih dari 31 lembar gaya pada satu halaman sekaligus. Ini jelas
pekerjaan iblis, tetapi tetap ada di luar IE8. Jika ada 31 stylesheet dan Anda menjalankan
OpenLayers map, tidak dapat menambahkan stylesheet lain untuk menginisialisasi namespace VML-nya.
Oleh karena itu, peta rusak. Anda harus menggabungkan CSS Anda.

Perbaikan

Kami tidak dapat memindahkan lapisan terbuka ke document.load() karena bergantung pada tumpukan perilaku Drupal, yang berjalan di document.ready(). Kita hanya perlu mendefinisikan document.namespaces sebelum OpenLayers menanyakan perender VML-nya apakah browser saat ini mampu merender VML (tugas yang coba diselesaikan dengan memanggil !!(document.namespaces))

Perbaikan lainnya

Adding a tag <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> will allow IE8 to render vectors if it doesn't render them correctly on a normal pageload. Note that this must be the first element inside the header tag.


Layers and GeometryEncoders

The primary type that defines a collection of geometries is the Layer. A layer contains an index for querying. In addition a Layer can be an EditableLayer if it is possible to add and modify geometries in the layer. The next most important interface is the GeometryEncoder.

The DefaultLayer is the standard layer, making use of the WKBGeometryEncoder for storing all geometry types as byte[] properties of one node per geometry instance.

The OSMLayer is a special layer supporting Open Street Map and storing the OSM model as a single fully connected graph. The set of Geometries provided by this layer includes Points, LineStrings and Polygons, and as such cannot be exported to Shapefile format, since that format only allows a single Geometry per layer. However, OMSLayer extends DynamicLayer, which allow it to provide any number of sub-layers, each with a specific geometry type and in addition based on a OSM tag filter. For example you can have a layer providing all cycle paths as LineStrings, or a layer providing all lakes as Polygons. Underneath these are all still backed by the same fully connected graph, but exposed dynamically as apparently separate geometry layers.


WMS/WMTS protocol and configuration improvements

Creating new styles from templates

It’s now possible to create new styles starting from the built-in templates, and the style will be encoded in the desired style language (SLD, or CSS, or even something else, if you created your own styling language extension point):

GeoWebCache filter parameters GUI improved

It’s now possible to configure integer parameters in the caching section of a layer configuration.

GeoWebCache Storage

GeoWebCache can now store cached tiles on a perlayer basis - including Amazon S3.

Request parameter support in Freemaker templates

Freemarker GetFeatureInfo templates can now access to the request parameter, as well as the Java process environment variables, in order to customize their response. For example, it’s now possible to expand the following variables in the template:

Controlling interpolation on a layer by layer basis

You can now control layer interpolation via GetMap, and specify a different interpolation policy on different layers. This is great if you are serving multiple raster maps, and maybe you want to have your classified raster use nearest neighbor, while showing the ozone density layer with bilinear interpolation.

Inspire configuration improved


GeoServer

The GeoServer team is happy to announce the GeoServer 2.15.0 release with downloads (zip|war|exe), documentation (html|pdf) and extensions.

This release is production ready and is ready to work with your Java 8 or Java 11 operational environment. This release is made in conjunction with GeoWebCache 1.15.0 and GeoTools 21.0.

The ability to work with Java 11 is the result a dedicated code sprint. Thanks to organizations participating in the code sprint (Boundless, GeoSolutions, GeoCat, Astun Technology, CCRi) along with sprint sponsors (Gaia3D, atol, osgeo:uk, Astun Technology).

Layer Service Settings

To start things off an often requested capability, the ability to control which services are enabled on a layer-by layer basis.

To try it our yourself see Service Settings in our user manual.

GeoFence Internal Server Extension

Originally a standalone service offering fine grain control over GeoServer security this functionality has been packaged up and embedded into a GeoServer extension for easier deployment.

  • GeoFence rules provided greater control over security allowing layer by layer service restrictions
  • GeoFence rules can provide access to data overriding layer details including CQL filter to limit contents returned and default style used for rendering
  • GeoFence rules can limit access to a geographic extent

For more details see GeoFence Internal Server in our user manual.

Style Editor SLD Auto-Complete

To help make editing easier the Style Editor can provide auto-complete suggestions for SLD 1.0. To try it out yourself use control-space for context aware suggestions.

Generate Classified Thematics maps

SLDService is now an official extension, with a number of improvements. SLDService can now be used for the

  • classification of raster data too
  • equal area classification
  • standard deviation filtering

The SLD REST Service extension is used to generate thematic styles based on attribute data:

For more information see SLD Rest Service in our user manual.

WPS GetExecutionStatus and Dismiss Operations

WPS “GetExecutions” vendor operation allows each user to get the list of running processes:

The Dismiss vendor operation can be used to cancel the execution of one of the listed processes.

For more information see Dismiss in our user guide.

Java 11 Support

The provided binary download works with either Java 8 or Java 11. Tomcat 9 or newer is required for the WAR install. The user guide compatibility list will continue to be updated based on your feedback.

The java ecosystem is now being led by the open source OpenJDK project, with long term support available from a range of organizations notably RedHat OpenJDK and Adopt OpenJDK. The GeoTools user guide provides an overview of Java 8 and Java 11 distributions.

The net effect of these changes:

  • If you have been using Oracle JDK please review your options
  • Java 8 will continue to be available
  • The Java ecosystem is now led by the open-source Open JDK project

Java 11 no longer supports the Java 2 extension mechanism used for native JAI and native ImageIO libraries. We recommend the use of the pure Java JAI-EXT operations which have been made the default (see the next section).

JAI-EXT operations on by default

The use of the JAI-EXT operations have long been a recommendation, with this release we are making them the default for GeoServer. The JAI-EXT library offers a pure java implementation enhanced for geospatial functionality supporting NODATA pixels and support for vector footprints.

GeoServer Codebase

In addition to Java 11 support this release includes:

  • Add JSON as a Legend Output format (GISP 173)
  • Printing plugin upgrade version of JTS
  • Upgrade NetCDF dependencies
  • Improvements for vector tile production, both in terms of output correctness and production performance

Thanks to Andrea Aime for steady work on the codebase quality:

    source code analysis, high priority checks, will fail the build in case of issues byte code analysis, same as above
  • Many small bugs fixed

For more details developers are invited to review Automated Quality Assurance checks in our developers manual. Also, work in ongoing on the master (dev) branch to extend the reach of static code checks using SpotBugs and CheckStyle too.


Tonton videonya: QGIS Openlayers Plugin Not Showing? - Solved - 2019 (September 2021).