Lebih banyak lagi

Gunakan GeoServer sebagai sumber lapisan vektor di OpenLayers 3

Gunakan GeoServer sebagai sumber lapisan vektor di OpenLayers 3


Saya menggunakan PostGIS dan GeoServer dan OpenLayers 3 (OL3). Saya menyambungkan jadual PostGIS ke GeoServer dan menerbitkan lapisan saya. Saya menggunakan kod berikut untuk mendapatkan lapisan sebagai lapisan vektor:

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

Saya perlu membaca ciri saya sebagai lapisan vektor kerana saya ingin memilihnya dan kemudian mendapatkan maklumat setiap ciri atau memindahkannya di peta. Apabila saya menggunakan kod ini, ia tidak menunjukkan apa-apa.

Adakah terdapat masalah dalam kod saya?

Bolehkah anda membantu saya mendapatkan lapisan vektor di OL3 dengan GeoServer WFS?


Masalahnya terletak pada penggunaan andaurl, yang di OL3 nampaknya hanya diharapkan fail statik, iaituurl = "/static/data/geojson.json".

Untuk mengisi peta anda dengan data yang dimuat secara dinamik, gunakan panggilan ajax danol.source.Vector.addFeatureskaedah:

var vectorSource = new ol.source.GeoJSON ({unjuran: 'EPSG: 4326'}), $ .get ('/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=cite:myfeaturesTbl&maxFeatures=50&output / json '// fungsi panggilan balik kejayaan (data) {// tambahkan pertama fitur vectorSource.addFeatures (vectorSource.readFeatures (data)); // kemudian paparkan peta… var map = new ol.Map ({target:'… ', lapisan: [ol.layer.Tile baru ({sumber:…}), ol.layer.Vector baru ({sumber: vectorSource})});});

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

Saya bekerja di County Simcoe di Ontario, Kanada dan kami telah menjadi kedai ESRI sejak 20 tahun yang lalu (Di Portal Premis, banyak Pelayan AGS, dll) tetapi kos pelesenan produk pelayan kami telah meningkat dengan ketara. Oleh itu, Pengarah saya menugaskan saya untuk berusaha membina semula aplikasi web kami yang ada di Open Source. Ia kini dibina di API JS 3.x menggunakan WAB - Pembangun Aplikasi Web.

Selepas beberapa kajian saya menggunakan React, OpenLayers, GeoServer dan PostGres DB. Saya mengambil kad dari WAB dan merancang jenis kerangka yang sama yang membolehkan pemaju memperluasnya dengan komponen mereka sendiri dan memuatkannya berdasarkan konfigurasi (Alat dan Tema).

Aplikasi TIDAK lengkap tetapi sepatutnya pada awal tahun 2020. Terdapat cukup di sana sehingga anda dapat memahami reka bentuk / konsep. Saya menyiarkan apa yang saya miliki sekarang di GitHub, dan juga projek sokongan (Maklum balas, WebAPI, dll). Saya sangat berharap bahawa anda yang bekerja di kedai ESRI dapat melihat apa yang mungkin dilakukan di OpenSource. Secara jujur, saya telah minum ESRI Kool-Aid sepanjang karier saya dan mengejutkan diri saya dengan yang satu ini.

Saya harap ada yang menganggap ini berguna atau bahkan menggunakan idea ini dalam organisasi mereka sendiri. Sebarang maklum balas / pertanyaan dialu-alukan.


11.1. Memasang dan Mengkonfigurasi¶

Aplikasi web GeoServer harus dipasang sebagai saudara Metacat. Sekiranya anda TIDAK ingin menjalankan GeoServer, penyebarannya dapat dilewati, tetapi kulit yang menggunakan peta tidak akan dibuat dengan betul. (CATATAN: Geoserver mengesyorkan menggunakan tetapan ruang PermGen sekurang-kurangnya 128MB.)

Metacat dilengkapi dengan direktori data yang telah dikonfigurasi sebelumnya untuk digunakan oleh GeoServer. Ini termasuk lapisan dasar negara-dunia dan konfigurasi lalai yang sudah mengetahui cache ruang Metacat. Antara muka konfigurasi Metacat digunakan untuk mengkonfigurasi GeoServer untuk menggunakan direktori data bersama ini. Untuk mengkonfigurasi GeoServer lebih lanjut, gunakan utiliti konfigurasi berasaskan Web, yang terdapat di: http://your.server.com/<geoserver_context> (mis., Http://knb.ecoinformatics.org/geoserver).

Tugas konfigurasi biasa termasuk:

  • Menambah Peta ke Halaman Web atau Kulit
  • Mengkonfigurasi Ukuran dan Luas Permulaan Peta
  • Mengkonfigurasi Tata Letak Antaramuka Pemetaan HTML
  • Mengkonfigurasi Menu Lungsur Pilih Lokasi
  • Mengkonfigurasi Gambaran Visual Data Geospatial (mis., Simbologi dan warna)
  • Menambah Set Data Spatial Lain ke Peta Web

Antara muka pentadbiran berasaskan Web GeoServer.

Catatan: Beberapa konfigurasi mungkin perlu dibuat pada fail XML juga.

OpenLayers, yang digunakan Metacat sebagai front-end untuk perkhidmatan WMS GeoServer, menyediakan komponen antara muka atau "widget" (mis. Peta, zoom kotak, daftar lapisan, menu drop-down "Pilih Lokasi", bar skala, lat / panjang koordinat, dan borang pertanyaan) yang memudahkan penggunaan aplikasi pemetaan berasaskan web dengan pengekodan minimum.

OpenLayers mempunyai tiga fail konfigurasi utama yang digunakan untuk menyesuaikan antara muka peta. Konfigurasi lalai adalah:

Dokumen Lokasi Penerangan
Fail lokasi bernama lokasi.jsp Senarai lokasi yang telah ditentukan (nama dan batas lat / lon)
Fungsi rendering peta utama peta.js Mentakrifkan peta, widget dan tingkah laku mereka
Peta dan susun atur halaman yang diberikan peta.jsp Memuat peta dan mengawal susun atur HTML widget.

CATATAN: Secara lalai, kali pertama Metacat dimulakan semula, ia menghasilkan "spatial cache" yang mengandungi maklumat geografi mengenai dokumen di repositorinya. Tingkah laku lalai ini ditentukan dalam lib / metacat.properties, di mana parameter regenerateCacheOnRestart ditetapkan ke true. Maklumat dalam cache ruang disimpan dalam format yang sesuai dengan GIS (ESRI Shapefile) dan terdiri daripada nama dokumen dan liputan geografinya. Apabila dokumen dimasukkan, dihapus, dan diperbaharui di repositori Metacat, Metacat secara automatik menyegerakkan cache spatial untuk mencerminkan perubahan. Kerana menghasilkan cache memerlukan masa yang cukup lama (beberapa minit sekiranya terdapat beberapa ribu dokumen), Metacat menetapkan semula properti regenerateCacheOnRestart ke false setelah cache spasial dihasilkan. Perhatikan bahawa jika anda menaik taraf atau memasang semula Metacat, cache spasial akan dibuat semula.

11.1.1. Menambah Peta ke Halaman Web atau Skin¶

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

URL peta, /metacat/style/common/spatial/map.jsp, adalah antara muka peta lalai. Sekiranya anda merancang untuk menyesuaikan antara muka peta, salin fail map.jsp ke dalam direktori kulit anda (sama ada direktori kulit lalai atau disesuaikan).

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

11.1.2. Mengkonfigurasi Ukuran dan Luas Permulaan Peta¶

Sebelum anda mengkonfigurasi ukuran dan tahap awal peta, pastikan anda telah menyalin halaman tata letak peta ke dalam direktori kulit anda (Lihat Mengonfigurasi Metacat untuk petunjuk). Setelah fail disalin, anda boleh mengubah tahap awal peta dalam: $/spatial/map.jsp.

Untuk mengubah tahap awal peta, edit kotak pengikat. Lalai adalah untuk menunjukkan seluruh dunia. Fungsi initMap () juga harus diberi nama kulit sehingga hasil carian spasial dapat digayakan dengan betul.

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

11.1.3. Mengkonfigurasi Tata Letak Antaramuka Pemetaan HTML¶

Ukuran dan tahap awal peta dapat diedit dalam: $/spatial/map.jsp.

Map.jsp adalah wadah mudah yang boleh dimasukkan ke halaman lain yang lebih kompleks jika dikehendaki. Ini berisi peta, senarai dropdown widget dan lokasi.

11.1.4. Mengkonfigurasi Menu Lungsur "Pilih Lokasi"

Lokasi yang muncul di menu tarik-turun "Pilih Lokasi" ditentukan dalam file location.jsp. The location.jsp boleh disalin dari templat spasial biasa ke dalam direktori kulit anda. Setiap lokasi ditakrifkan sebagai tag HTML & ltoption / & gt. Edit nilai dan label untuk mengedit atau menambah lokasi baru.

11.1.5. Mengkonfigurasi Gambaran Visual Data Geospatial (mis., Simbologi dan warna) ¶

Kumpulan data geospasial digayakan melalui penggunaan Styled Layer Descriptors (SLD). SLD lalai yang digunakan untuk titik data dan kotak pengikat data berada di / lib / spatial / geoserver / data / gaya / dan masing-masing diberi nama data_points_style.sld dan data_bounds_style.sld.

Anda boleh mendapatkan tutorial yang lebih terperinci mengenai penggunaan SLD dengan GeoServer dalam dokumentasi GeoServer:

11.1.6. Menambah Set Data Spasial Lain ke Peta Web¶

Sekiranya anda mempunyai set data vektor GIS, seperti cuaca atau maklumat topografi, di pelayan anda yang ingin anda sertakan dalam peta interaktif, anda mesti mendaftarkan set data terlebih dahulu dengan GeoServer. Setelah set data telah didaftarkan, anda dapat menambahkan lapisan ke peta. Anda juga boleh menambahkan lapisan spasial yang telah tersedia untuk umum melalui WMS (Terdapat ratusan set data spasial yang tersedia. Lihat katalog wms-sites.com untuk katalog yang bagus). Arahan untuk menambahkan lapisan yang tersedia untuk umum disertakan di akhir bahagian ini.

Untuk mendaftarkan set data dan menambahkannya ke peta:

  1. Arahkan penyemak imbas anda ke http: //your.server/geoserver, log masuk ke GeoServer, dan arahkan ke halaman konfigurasi "Kedai Data" di bawah Kedai Data & gt.
  2. Buat sumber data vektor baru dari Shapefile di ruang kerja "metacat".

Membuat shapefile baru menggunakan antara muka pentadbiran berasaskan web GeoServers.

  1. Penerangan, jika dinyatakan, kebanyakannya digunakan secara dalaman untuk memberi maklumat kepada Pentadbir lain mengenai DataStore. Klik Hantar.
  2. Arahkan ke halaman konfigurasi "Lapisan" di bawah Lapisan Data & gt. Tambahkan Lapisan baru dari sumber data baru anda.
  3. Anda juga harus menentukan nombor sistem rujukan spasial (SRS) untuk lapisan baru. Sebilangan besar data lat / panjang adalah "4326". Sekiranya data anda berada dalam unjuran lain, tentukan sistem rujukan spatialnya menggunakan pautan bantuan yang disediakan.

Konfigurasi Jenis Feature GeoServer. Tetapan SRS yang dibincangkan dalam langkah 5 diserlahkan.

  1. Gaya lapisan menggunakan gaya dari menu drop-down pada tab Publishing, atau buat SLD baru untuk membuat objek gaya baru dan SLD yang sesuai (pilihan ini memberikan lebih banyak kawalan terhadap gaya).
  2. Cubalah set data yang digayakan sebagai lapisan WMS menggunakan Layer Preview.

GeoServer Layer Preview membolehkan anda melihat rendering OpenLayer dari lapisan baru.

  1. Salin fail map.js lalai yang menyusun peta di OpenLayers (style / common / spatial / map.js) ke direktori spasial kulit anda.
  2. Edit kaedah init () untuk memasukkan lapisan baru anda dalam peta - baik sebagai lapisan atau lapisan dasar.
  3. Arahkan penyemak imbas anda ke antara muka peta. Lapisan baru anda akan muncul dengan lapisan yang ada.

11.1.7. Menambah Data Spatial Luaran yang Dibuat Secara Umum melalui WMS¶

Terdapat beratus 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 dalam fail spatial / map.js kulit anda.


Indiemaps.com/blog

Saya gembira dapat melakukan lebih sedikit Flash dan lebih banyak pengembangan JavaScript hari ini. Secara khusus, saya telah menyiasat dua platform pemetaan web sumber terbuka JavaScript: satu lama, OpenLayers, dan satu yang baru, Polymaps.

OpenLayers telah lama wujud, tetapi masih berkinerja sangat baik sebagai rangka peta yang licin sambil membenarkan penyesuaian peta tematik yang mudah. Polymaps adalah jenama baru (dari Stamen sehingga anda tahu ia akan meletupkan fikiran anda), tetapi luar biasa kerana membolehkan penyesuaian tematik berdasarkan piawai web lapisan geografi yang dimuat melalui GeoJSON atau KML ke & # 8220vektor jubin yang diberikan dengan SVG & # 8221

Dalam catatan ini saya menunjukkan bagaimana OpenLayers atau Polymaps dapat digunakan untuk membuat kartogram tidak bersambung yang dinamik dan disesuaikan dengan kod yang sangat sedikit.

Di atas adalah kartogram pengaruh pilihan raya negeri dari tahun 2007 oleh NY Times

Saya pernah menulis mengenai gals ini sebelum ini. Bentuknya melibatkan pengubahan saiz ciri (seperti negeri atau negara) yang berkaitan dengan nilai atribut unit dalam bidang tertentu (selalunya penduduk). Tidak seperti bentuk kartogram yang lebih biasa dan bersebelahan, kartogram tidak bersambung tidak berusaha mengekalkannya topologi, tetapi oleh itu bebas untuk dikekalkan bentuk dengan sempurna dan bereksperimen dengan kedudukan, seperti dalam contoh di atas.

Inilah contoh dari artikel 1976 Judy Olson yang asli pada borang kartogram ini.

Lihat catatan lama saya atau artikel Olson untuk maklumat lebih lanjut mengenai teknik dan teori di sebalik itu. Olson menghasilkan gambar di atas secara separa manual menggunakan projektor & # 8212 setiap keadaan diproyeksikan pada faktor penskalaan tepat dan kemudian dikesan. Di bawah ini saya menunjukkan bagaimana melakukan lebih kurang perkara yang sama, tetapi dengan JavaScript dan OpenLayers atau Polymaps.

Pelaksanaan

Saya mahu memuatkan fail geodata poligonal mana pun (disokong oleh kerangka pemetaan web yang dipilih) dan mengubah saiz ciri berdasarkan atribut berangka apa pun untuk membentuk kartogram yang tidak bersambung. Kelebihan melaksanakan ini dalam kerangka pemetaan web jelas sekali bahawa lapisan data tambahan dari pelbagai sumber dapat dengan mudah diatasi atau diuraikan.

Sebagai ujian dan bukti konsep untuk kedua-dua kerangka ini, saya ingin menghasilkan semula grafik Olson (di atas) dengan sebaik mungkin. Olson menggunakan data Banci 1970 untuk menunjukkan jumlah orang yang berumur 65 tahun ke atas di sini. Saya mengemas kini dengan anggaran data tahun 2009. Secara khusus, saya akan memuatkan lapisan data Geocommons yang dimuat naik tahun lalu.

Saya telah bekerja dengan OpenLayers selama kira-kira setengah tahun, jadi saya melaksanakan kartogram di sana terlebih dahulu.

OpenLayers

Mengimplementasikan kartogram yang tidak bersesuaian dalam OpenLayers cukup mudah, berkat kaedah berguna yang disediakan oleh kerangka komprehensif ini. Langkah pertama ialah memuatkan geodata.

Muatkan geodata

OpenLayers menjadikan pemuatan geodata cukup mudah, perpustakaan dapat menguraikan WKT, GML, KML, GeoJSON, GeoRSS, dll. Untuk semua, kita akan menggunakan kelas Layer.Vector. Dalam kes ini, saya akan memuatkan versi KML dari Geocommons, dan oleh itu parser Format.KML OpenLayer.

Kartogram yang tidak bersambung tidak memerlukan unjuran geografis & # 8212 tanpa mengira unjuran garis linen asal, ciri tersebut masih boleh ditingkatkan atau turun dengan tepat untuk membentuk kartogram. Oleh itu, satu-satunya sebab unjuran adalah estetika dan untuk meningkatkan ciri yang dapat dikenali. Saya tidak pasti mengenai unjuran apa yang digunakan Olson, tetapi saya hanya memilih kawasan klasik lama, Albers Equal Area. Secara khusus, saya menggunakan Proj4js dan definisi berikut:

Proj4js.defs ["MY_ALBERS"] = & # 8220 + 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 & # 8221

Untuk menerapkannya, saya hanya membuat OpenLayers.Projek baru yang akan diterapkan ke peta ketika dibuat. Thematicmapping.org mempunyai lebih banyak maklumat mengenai unjuran dan OpenLayers.

Kecuali anda sudah mengetahui nilai maksimum dari atribut apa pun yang dipetakan, anda harus melengkapkan semuanya sekali sebelum anda dapat mengulanginya lagi ke skala. Atribut boleh diakses melalui sifat atribut setiap OpenLayers.Feature.Vector (boleh diakses melalui sifat ciri OpenLayers.Layer.Vector).

Ciri-ciri skala

Untuk meningkatkan ciri poligonal untuk kartogram yang tidak bersambung, kita mesti tahu:

  1. nilai ciri untuk atribut tematik yang dipilih (lihat di atas)
  2. kawasan dan pusat ciri seperti yang diberikan

OpenLayers menjadikannya mudah diakses. Objek geometri setiap ciri mempunyai kaedah getArea dan getCentroid. Sejauh yang saya tahu, fungsi getCentroid mengembalikan pusat jisim poligonal sebenar, dan bukan hanya pusat kotak pengikat ciri.

dikehendakiArea = (value / maxValue) * maxArea

Skala yang diinginkan = Math.sqrt (dikehendakiArea / originalArea)

Skala ini kemudian diterapkan melalui kaedah ukuran semula setiap geometri ciri.

feature.geometry.resize (dikehendaki Skala, sentroid)

Keputusan

Berikut adalah gambar dari contoh yang anda dapati di halaman ini. Semua sumber boleh diakses dari sana.

Hei, itu kelihatan hebat. Michigan agak di tengah-tengah, tetapi saya percaya itu kerana poligon hanya ditentukan oleh satu cincin koordinat, walaupun mestilah multipoligon. Mungkin lebih ketara ialah pertindihan di Timur Laut. Dalam contoh asal Judy Olson, negeri diledakkan oleh projektor visual dan kemudian dikesan. Tetapi projektor boleh ditujukan sebelum mengesan, sehingga mengelakkan pertindihan. Dalam kes ini, saya hanya memperhitungkan keadaan dan memastikannya berada di pusat asalnya.

Saya dapat mengelakkan pertindihan dengan menentukan kedudukan yang sesuai dan menetapkannya dalam OpenLayers (tetapi pertindihan akan sangat sukar untuk ditentukan dan kemudian ditangani secara dinamik) atau dengan mengurangkan kawasan maksimum yang boleh dikonfigurasi yang dibenarkan pada kartogram yang dihasilkan (tetapi untuk memastikan anda pencegahan pertindihan ciri harus ditimbang sedikit, yang akan mengurangkan pembacaan kartogram).

Peta Polim

Polymaps adalah perpustakaan pemetaan JavaScript yang cukup baru oleh Stamen dan SimpleGeo. Geocommons baru-baru ini memperkenalkan Polymaps ke perkhidmatan pemetaan dalam talian mereka, mewujudkan alat pemetaan tematik dalam talian tanpa Flash yang cukup hebat. Membuat kartogram yang tidak bersambung di Polymaps agak sukar daripada proses yang diperincikan di atas, hanya kerana perpustakaannya sangat ringan.

Muatkan geodata

Langkah pertama cukup mudah. Sejauh format geodata vektor, Polymaps hanya mempunyai sokongan terpadu untuk GeoJSON, walaupun mereka memberikan contoh KML yang memanfaatkan kaedah pengambilan pilihan yang ditentukan dalam pembangun lapisan GeoJSON.

Tetapi saya hanya akan menggunakan GeoJSON untuk yang ini. Saya dapati dalam catatan ini dari GeoIQ bahawa saya boleh mengakses ciri versi GeoJSON di mana-mana set data Geocommons dengan pergi ke titik akhir & # 8220features.json & # 8221. Oleh itu, untuk set data banci anggaran 2009 saya akan memuatkan di http://geocommons.com/overlays/55629/features.json?geojson=1 menggunakan kaedah mudah berikut:

Perhatikan bahawa memuatkan secara langsung dari Geocommons hanya berfungsi semasa berkembang secara tempatan kerana dasar merentas domain. Oleh itu, dalam contoh selesai saya akhirnya memuat versi tempatan JSON.

Polymaps terhad kepada unjuran Web Mercator untuk paparan, tetapi kami masih dapat menghasilkan pembiakan semula yang asli dari Olson.

Seperti dalam contoh OpenLayers di atas, kecuali jika anda sudah mengetahui nilai maksimum atribut anda, anda perlu terlebih dahulu mencari-cari ciri untuk menentukannya. Dalam kod di atas, anda dapat melihat saya menggunakan kaedah lapisan untuk mendengarkan acara & # 8220load & # 8221. Dan di sana saya dapat mengeluarkan ciri-ciri saya dari ciri ciri objek acara. Atribut disimpan pada harta data.properties setiap ciri.

Ciri-ciri skala

Untuk mengukur setiap ciri, kita harus terlebih dahulu mengetahui nilainya dalam atribut yang dipilih (lihat di atas). Kemudian kita perlu menentukan luasnya sekarang (dalam piksel) untuk mengetahui kawasan yang dikehendaki oleh ciri tersebut pada kartogram akhirnya. OpenLayers menyediakan kaedah yang mudah untuk ini tetapi di Polymaps kita harus melancarkan sendiri kerana Mike Bostock (salah satu pengarang utama Polymaps) sangat membantu. Untuk mengira luas setiap ciri, saya hanya memerlukan akses ke senarai koordinat yang diunjurkan (maka saya boleh menggunakan teknik asas yang diperincikan di sini). Encik Bostock menunjuk saya ke harta pathSegList antara muka SVGPathElement. PathSegList mendedahkan senarai segmen laluan dengan antara muka SVGPathSeg. Mike mengatakan bahawa saya boleh mengandalkan segmen ini sebagai salah satu jenis & # 8220M & # 8221 (pindah ke), & # 8220L & # 8221 (garis ke), atau & # 8220Z & # 8221 (garis akhir). Dengan maklumat ini, saya dengan cepat mengumpulkan kaedah yang harus mengembalikan kawasan yang diproyeksikan dari SVGPathElement yang mungkin dihasilkan oleh Polymaps.

fungsi getPathArea & # 40 segList & # 41
{
kawasan var = 0
var seg1, seg2
var nPts = segList. numberOfItems

// mari kita lihat apakah item terakhir adalah 'Z' (semestinya)
var lastLetter =
segmen. getItem & # 40 nPts - 1 & # 41. pathSegTypeAsLetter
jika & # 40 lastLetter. keLowerCase & # 40 & # 41 == 'z' & # 41
nPts -
var j = nPts - 1
segItem_list:
untuk & # 40 var i = 0 i & lt nPts j = i ++ & # 41
{
seg1 = segList. getItem & # 40 i & # 41
seg2 = segList. getItem & # 40 j & # 41
luas + = seg1. x * seg2. y
luas - = seg1. y * seg2. x
}
kawasan / = 2
mengembalikan Math. kawasan abs & # 40 & # 41
}

Saya dapat membuat kaedah centroid yang serupa dengan mudah, tetapi saya malas dan memutuskan untuk menggunakan pusat kotak pengikat setiap ciri (boleh diakses melalui kaedah getBBox elemen SVG setiap elemen).

Kawasan dan skala yang diinginkan dikira seperti yang kami lakukan di OpenLayers di atas:

dikehendakiArea = (value / maxValue) * maxArea
Skala yang diinginkan = Math.sqrt (dikehendakiArea / originalArea)

Skala kemudian diterapkan melalui atribut & # 8216transform dari setiap elemen SVG, kedua-dua skala dan terjemahan x-y mesti ditentukan dalam atribut & # 8216transform:

Keputusan

Seperti sebelumnya, berikut adalah gambar yang diambil dari contoh yang anda dapati di halaman ini. Anda akan melihat sedikit kod di sana, tetapi sila & # 8216lihat sumber ’untuk melihat semua kod dan markup.

Selain daripada perbezaan unjuran yang diperlukan, perkara utama yang menonjol adalah pertindihan di Timur Laut. Saya membincangkan kemungkinan cara untuk mengelakkannya dalam contoh OpenLayers di atas.

Kesimpulannya

Tidak ada yang baru di sini. Saya telah melakukan ini di Flash sebentar & # 8212 lihat di sini dan di sini dan sudah tentu Judy Olson melakukannya sekitar 35 tahun yang lalu. Tetapi senang melihatnya berfungsi secara dinamik di beberapa sumber terbuka, pustaka yang mematuhi piawaian web. Terima kasih kepada OpenLayers, Polymaps, dan Geocommmons kerana memungkinkan!

8 Komen

Anda boleh melakukan perkara yang sama menggunakan SLD dan penapis Java sederhana menggunakan GeoServer. Lihat http://ian01.geog.psu.edu/geoserver/www/cartogram/discontinous.html untuk contoh dan perincian.

Adakah anda menurunkan pautan pertama ke pelayan untuk diuji? Di mana lagi kita boleh menguji atau ada petunjuk mengenai cara mengatur persekitaran ini dan menguji?

Satu soalan lain. Bagaimana seseorang mengatur persekitaran untuk menguji dan menjalankannya? terima kasih

Hai terima kasih atas tunjuk ajar anda mengenai siaran ini sebenarnya bermanfaat, kami telah sekian lama berusaha mencari maklumat dan ini bagus untuk kami fahami, mencari radio yang sesuai dengan yang kami perlukan tidak mudah. Terima kasih sekali lagi

Tulis lebih banyak, itu sahaja yang saya katakan. Secara harfiah, seolah-olah anda bergantung pada video untuk menyatakan maksud anda. Anda pasti tahu apa yang anda bicarakan, mengapa membuang kecerdasan anda hanya dengan menyiarkan video ke laman web anda sedangkan anda boleh memberi kami sesuatu yang menyedihkan untuk dibaca?

Teksnya tentu sangat kuat dan kemungkinan itulah sebabnya saya berusaha untuk memberi komen. Saya tidak menjadikannya kebiasaan melakukan perkara itu. Kedua, walaupun saya dapat dengan mudah melihat lonjakan alasan yang anda sampaikan, saya tidak begitu yakin dengan bagaimana anda dapat menghubungkan maklumat anda yang membantu anda membuat kesimpulan. Buat masa ini, saya pasti akan melayan kedudukan anda, namun berharap pada masa hadapan anda dapat menghubungkan fakta anda dengan lebih baik.

Kami tidak menyatakan secara khusus bidang yang anda akan perolehi data anda, dengan mengatakan bahawa tema itu bermanfaat. Saya perlu meluangkan masa menguasai lebih banyak dan juga menyedari tambahan. Terima kasih atas maklumat yang sangat baik. Saya mencari butiran ini untuk tujuan saya.

Cuma penasaran jika anda telah mencuba sesuatu yang lebih mudah - mengindeks nilai yang ingin anda tunjukkan di kartogram sehingga keadaan dengan nilai terbesar adalah 100% (iaitu mengekalkan ukuran semasa) dan menyesuaikan semua ukuran keadaan lain peratusan relatif ke pangkalan ini, kemudian buffering ke dalam? Negeri dengan peratusan terkecil mungkin hilang, tetapi mungkin mengekalkan kedudukan dan tidak bertindih menyebabkan ukuran anda semakin berkurang. Tetapi mungkin jika terdapat perbezaan besar antara nilai tertinggi / terendah, saya rasa mungkin hanya menunjukkan satu keadaan dan semua keadaan lain hilang & # 8230boleh menjadi kecil & # 8230?

5 Jejak Balik

[. ] indiemaps.com/blog »Kartogram tidak bersambung di OpenLayers dan Polymaps indiemaps.com/blog/2011/02/noncontiguous-cartograms-in-openlayers-and-polymaps/ & ndash view page & ndash cache Saya gembira kerana dapat melakukan lebih sedikit Flash dan lebih banyak pengembangan JavaScript hari ini. Secara khusus, saya telah menyiasat dua platform pemetaan web sumber terbuka JavaScript: satu lama, OpenLayers, dan satu yang baru, Polymaps. Tunjukkan hanya berpengaruh (1) $ ('# filter-infonly'). Ubah (fungsi () lain >) [. ]

[. ] luar biasa, bagaimana dengan ini? Kartogram yang tidak bersambung dalam OpenLayers dan Polymaps 1. OpenLayers + Polymaps 2 adalah gabungan yang berjaya. Tuhan memberkati Ian Turton kerana mendorong [. ]

[. ] Kartogram yang tidak bersambung dalam OpenLayers dan Polymaps [. ]

[. ] Saya menjumpai karyanya tiga tahun yang lalu, dan tidak ada salahnya menyanjung kami dengan menulis blog mengenai beberapa peretasan hebat menggunakan API kami. Saya sangat gembira dapat menyertai pasukan pengembangan GeoIQ sebagai Jurutera Visualisasi. The [. ]

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


GeoServer 2.17.3 Dikeluarkan

Kami dengan bangga mengumumkan pelepasan GeoServer 2.17.3 dengan muat turun (war | bin), dokumentasi dan pelanjutan.

Keluaran ini dibuat bersama dengan GeoTools 23.3 dan GeoWebCache 1.17.3. Ini adalah keluaran penyelenggaraan yang disyorkan untuk sistem pengeluaran.

Terima kasih kepada semua yang memberikan sumbangan, dan Alessandro Parma, Andrea Aime (GeoSolutions) kerana telah membuat siaran ini.

Penambahbaikan dan Pembaikan

Siaran ini merangkumi sejumlah peningkatan. Penambahbaikan yang ketara:

  • SLDService kini dapat mengiklankan kaedah klasifikasi yang disokong (untuk klien pemeriksaan masa depan, sekiranya kaedah baru ditambahkan kemudian). Kaedah klasifikasi berdasarkan sisihan piawai baru telah ditambah.
  • Skema aplikasi yang menghasilkan output ciri sederhana (pemetaan tulen) kini boleh digunakan dengan semua format ciri mudah yang biasa, seperti shapefile, CSV, KML dan sebagainya.
  • Ada kemungkinan untuk melumpuhkan pelengkapan automatik log masuk UI
  • Pengimport telah dioptimumkan untuk mengelakkan imbasan direktori penuh semasa mengimport fail tunggal. Ini ditambah dengan pengoptimuman serupa dalam pengambilan mozaik gambar, mempercepat pengambilan fail baru secara signifikan melalui pengimport, ketika terkandung dalam direktori yang memiliki banyak file.
  • Output ubin vektor kini dapat memperoleh keuntungan penuh dari sumber data pra-umum, membaca ciri pada resolusi yang diperlukan untuk menghasilkan jubin vektor (sebelumnya menggunakan resolusi tertinggi yang tersedia).
  • Transformasi proses / rendering Jiffle kini dapat menghasilkan output multi-band, dan prestasinya mendapat beberapa peningkatan.

Pembaikan yang disertakan dalam siaran ini:

  • Pengurusan memori sumber GDAL raster telah diperbaiki.
  • Pratonton lapisan dengan pematuhan WMS yang ketat tidak berfungsi lagi, ini telah diperbaiki.

Untuk maklumat lebih lanjut, periksa catatan pengeluaran 2.17.3.

Kemas kini Komuniti

Untuk pembangun yang membina dari sumber, modul komuniti kami adalah tempat yang bagus untuk bekerjasama dalam fungsi dan penambahbaikan.


Cara Menghubungkan SAP HANA dengan GeoServer

Sementara itu SAP HANA dan ciri spatialnya dapat digunakan dengan banyak alat GIS pihak ketiga (Sistem Maklumat Geografi). Satu persoalan penting ialah bagaimana menghubungkan SAP HANA dengan alat ini. Ini mungkin sangat berbeza dari alat ke alat dan kadang-kadang juga jenis maklumat tersembunyi, terutama apabila kemungkinan dan sokongan untuk alat tertentu baru dan baru. Di dalam blog ini saya menerangkan secara terperinci cara menghubungkan SAP HANA dengan GeoServer.

SAP HANA boleh digunakan di GeoServer sebagai penyimpanan data. http://docs.geotools.org/latest/userguide/library/jdbc/hana.html menerangkan dalam arti bahawa ini mungkin. Kami akan memberikan perincian dalam blog ini untuk persekitaran MS Windows 10 dan GeoServer 2.15.0.

Gunakan HANA Plug-In untuk GeoServer: Pergi ke https://mvnrepository.com/artifact/org.geotools.jdbc/gt-jdbc-hana/21.0 dan klik butang di sebelah kanan & # 8220Files & # 8221 untuk memuat turun fail gt-jdbc-hana-21.0.jar.

Salin fail gt-jdbc-hana-21.0.jar ke direktori & # 8230 GeoServer 2.15.0 webapps geoserver WEB-INF lib pemasangan GeoServer.

Setelah melakukan ini juga HANA JDBC ngdbc.jar pemandu mesti disalin ke direktori yang sama.

Awak boleh cari ngdbc.jar dalam direktori C: Program Files SAP hdbclient pemasangan hdbclient persekitaran anda.

Setelah melakukan ini mulakan semula geoServer dan anda akan menjumpai SAP HANA sebagai sumber data vektor lebih jauh di Geo Server di bawah Kedai & # 8211 & gt Tambahkan kedai baru:

Tentukan Sumber Data Vektor untuk SAP HANA: Kami hanya akan menerangkan parameter sambungan ke pangkalan data HANA ketika membuat kedai di GeoServer. Sebagai prasyarat, anda juga perlu mempunyai ruang kerja. Untuk perincian cara membuat ruang kerja dan tutorial umum untuk GeoServer, lihat cth. https://geoserver.geo-solutions.it/edu/en/.

Dalam persekitaran berbilang penyewa, anda harus menyatakan nama pangkalan data penyewa dan nombor contoh di bahagian bawah topeng entri. Perlu diingat bahawa TIDAK berfungsi untuk menggunakan SQL-Port penyewa masing-masing dan membiarkan pangkalan data kosong. Pelabuhan lapangan adalah wajib, tetapi tidak dipertimbangkan. Parameter sambungan yang selebihnya harus cukup jelas.

Dalam contoh ini pangkalan data penyewa saya dipanggil SPL dan ada skema pangkalan data yang disebut HACKT25.

Anda sekarang boleh membuat lapisan baru di GeoServer melalui Lapisan & # 8211 & gt Tambahkan lapisan baru dan semak semula apa yang anda lihat di sini dengan apa yang anda ada dalam pangkalan data HANA jauh anda.

Sebagai kesimpulan, kita melihat bahawa bahagian-bahagian utama adalah tempat untuk memuat turun plug-in Hana yang betul dan kedua untuk mengetahui apa yang diminta oleh sifat sambungan stor data di GeoServer.


Lapisan Vektor dan IE

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

Punca masalah:

Internet Explorer mempunyai perkara yang disebut VML: Vector Markup Language, yang digunakannya untuk melukis grafik. VML adalah apa yang anda gunakan di IE: canvas4ie sangat lambat, peta google menggunakan VML untuk menarik laluan, dan OpenLayers menggunakannya untuk menarik vektor.

Elemen VML digayakan dengan membuat gaya seperti CSS di ruang nama. OpenLayers mencipta ruang nama ol: kemudian mencipta gaya seperti ol: line ol: circle, dll.

Untuk melakukan ini, ia mesti mengakses ruang document.names. Document.namespaces tidak selalu ada: terutamanya, anda tidak boleh bergantung pada ia sebelum dokumen.

Tetapi, kadang-kadang document.namespaces * ada * sebelum dokumen. Sudah dan itulah perkara yang merosakkan pandangan dunia saya. Jadi, teorinya, ada mod. Sesuatu dalam HTML dapat mengelakkan ruang dokumen.names diisi sebelum dokumen. Sudah.

$ (atau $ (dokumen). sudah ()

  • Sekiranya terdapat gambar yang rosak di halaman, maka ruang nama tidak diisi.
  • Sekiranya halaman tidak mempunyai gambar yang rosak, maka ruang dokumen.names dapat diakses

Document.load ()

31 helaian gaya

IE tidak dapat menangani lebih dari 31 helaian gaya pada halaman pada satu masa. Ini jelas
kerja syaitan, tetapi ia berterusan di luar IE8. Sekiranya terdapat 31 helaian gaya dan anda menjalankan
Peta OpenLayers, ia tidak dapat menambahkan lembaran gaya lain untuk memulakan ruang nama VMLnya.
Oleh itu, peta rosak. Anda mesti mengumpulkan CSS anda.

Betulkan

Kami tidak dapat memindahkan openlayers ke document.load () kerana bergantung pada tumpukan tingkah laku Drupal, yang berjalan pada document.ready (). Kita hanya perlu mendefinisikan namespaces document sebelum OpenLayers bertanya kepada penyaji VMLnya apakah penyemak imbas semasa mampu membuat VML (tugas yang cuba diselesaikan dengan memanggil !! (document.namespaces))

Pembaikan Lain

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: GeoServer Web GIS: Web Map Service WMS Publishing with Shapefile EN