Lapisan klien OGC WFS-T untuk selebaran.
Melalui npm:
npm i leaflet-wfst --save
Melalui Bower:
bower i leaflet-wfst --save
Dari GitHub:
npm i -S git://github.com/Flexberry/Leaflet-WFST.git#v1.1.1
di mana #v1.1.1 adalah versi rilis spesifik.
options: {
crs : L . CRS . EPSG3857 ,
showExisting : true ,
geometryField : 'Shape' ,
url : '' ,
typeNS : '' ,
typeName : '' ,
opacity : 1 ,
style : {
color : 'black' ,
weight : 1
}
}
const wfstPointOptions = {
crs : L . CRS . EPSG4326 ,
showExisting : true ,
geometryField : 'geom' ,
url : `http://localhost:8080/geoserver/wfs` ,
typeNS : 'test' ,
typeName : 'test' ,
maxFeatures : 90 ,
opacity : 1 ,
style : function ( layer ) {
// you can use if statemt etc
return {
color : 'black' ,
weight : 1
}
} ,
} ;
const wfstPoint = new L . WFST ( wfstPointOptions , new L . Format . GeoJSON ( {
crs : L . CRS . EPSG4326 ,
pointToLayer ( geoJsonPoint , latlng ) {
const layer = new L . CircleMarker ( latlng , {
radius : 10 ,
} ) ;
return layer ;
} ,
} ) ) ;
wfstPoint . addTo ( map ) ;
nama opsi | bawaan | komentar |
---|---|---|
crs | L.CRS.EPSG3857 | sistem referensi spasial untuk lapisan, harus menerapkan ICRS, misalnya Proj4Leaflet |
pertunjukan yang ada | BENAR | memuat fitur yang ada pada lapisan buat |
bidang geometri | 'Membentuk' | bidang untuk menyimpan geometri, untuk layanan non-transaksi dapat dihilangkan |
url | - | Url WFS, misalnya http://demo.opengeo.org/geoserver/osm/ows |
mengetikNS | - | ketik ruang nama |
ketikNama | - | ketik nama |
ketikNSNama | - | ketik nama namespace |
namespaceUri | - | URI ruang nama |
kegelapan | 1 | opacity lapisan |
gaya | - | gaya vektor selebaran. fungsi atau objek |
menyaring | - | filter apa pun. lihat penyaring |
Fitur maksimal | - | membatasi jumlah fitur yang dikembalikan |
var map = L . map ( 'map' ) . setView ( [ 0 , 0 ] , 2 ) ;
var boundaries = new L . WFS ( {
url : 'http://demo.opengeo.org/geoserver/ows' ,
typeNS : 'topp' ,
typeName : 'tasmania_state_boundaries' ,
crs : L . CRS . EPSG4326 ,
style : {
color : 'blue' ,
weight : 2
}
} ) . addTo ( map )
. on ( 'load' , function ( ) {
map . fitBounds ( boundaries ) ;
} )
Memperluas kelas selebaran dengan fungsi toGml(crs):
Memicu dua jenis peristiwa:
Geometri penanda ditulis sebagai posNode, untuk semua lapisan geometri lainnya ditulis sebagai posList
Realisasi OGC Filter Encoding v1.1.0
Implementasi filter hanya mengembalikan konten dalam elemen filter.
Beberapa pertimbangan untuk semua konstruktor filter:
Nama | Konstruktor |
---|---|
PENGENAL | |
GmlObjectId | L.Filter.GmlObjectId(nilai id) |
Perbandingan | |
PropertiIsEqualTo | L.Filter.EQ(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
PropertiIsNotEqualTo | L.Filter.NotEQ(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
PropertiKurangDari | L.Filter.LT(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
Properti Lebih Besar Dari | L.Filter.GT(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
PropertyIsLessThanOrEqualTo | L.Filter.LEQ(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
Properti Lebih Besar Dari Atau Sama Dengan | L.Filter.GEQ(propertyExpression firstArgument, literalExpression secondArgument, bool matchCase) |
Properti Adalah Seperti | L.Filter.Like(string propertyName,string likeExpression,atribut objek) |
PropertiIsNull | L.Filter.IsNull(string nama properti) |
PropertiAda di Antara | L.Filter.IsBetween(propertyExpression firstArgument, literalExpression batas bawah, literalExpression batas atas) |
Operator | |
Menambahkan | L.Filter.Add(ekspresi, ekspresi) |
Sub | L.Filter.Sub(ekspresi, ekspresi) |
Mul | L.Filter.Mul(ekspresi, ekspresi) |
Divisi | L.Filter.Div(ekspresi, ekspresi) |
Logika | |
Dan | L.Filter.Dan(ekspresi[, ekspresi]*) |
Atau | L.Filter.Or(ekspresi[, ekspresi]*) |
Bukan | L.Filter.Not(ekspresi) |
Spasial | |
Kotak B | L.Filter.BBox(string propertyName, batas latLngBounds, ICRS crs) |
Setara | L.Filter.Equals(string propertyName, Lapisan geometri, ICRS crs) |
Menguraikan | L.Filter.Disjoint(string propertyName, Lapisan geometri, ICRS crs) |
Menyentuh | L.Filter.Touches(string propertyName, Lapisan geometri, ICRS crs) |
Di dalam | L.Filter.Dalam(string propertyName, Layer geometri, ICRS crs) |
Tumpang tindih | L.Filter.Overlaps(string propertyName, Lapisan geometri, ICRS crs) |
Persilangan | L.Filter.Crosses(string propertyName, Lapisan geometri, ICRS crs) |
Berpotongan | L.Filter.Intersects(string propertyName, Layer geometri, ICRS crs) |
Berisi | L.Filter.Contains(string propertyName, Lapisan geometri, ICRS crs) |
Penyangga jarak spasial | |
DDalam | L.Filter.DDalam(string propertyName, Lapisan geometri, ICRS crs, jarak nilai, unit string) |
Di luar | L.Filter.Beyond(string propertyName, Layer geometri, ICRS crs, jarak nilai, unit string) |
Lainnya | |
Fungsi | L.Filter.Fungsi(string functionName[, ekspresi]*) |
Nama Properti | L.Filter.propertyName(nama string) |
Harfiah | L.Filter.literal(nilai) |
PropertyName dan Literal berfungsi dan mengembalikan Gml secara langsung.
Dalam standar ada dua filter - GmlObjectID dan FeatureID, tetapi yang terbaru ditandai sebagai tidak digunakan lagi sehingga tidak diterapkan.
Contoh:
var filter = new L . Filter . GmlObjectID ( 1 ) ;
hasil xml:
< ogc : Filter xmlns : ogc = " http://www.opengis.net/ogc " >
< ogc : GmlObjectId xmlns : gml = " http://www.opengis.net/gml " gml : id = " 1 " />
</ ogc : Filter >
var filter = new L . Filter . EQ ( 'city' , 'Perm' ) ;
filter . toGml ( )
hasil xml:
< ogc : PropertyIsEqualTo >
< ogc : PropertyName >city</ ogc : PropertyName >
< ogc : Literal >Perm</ ogc : Literal >
</ ogc : PropertyIsEqualTo >
Filter ini menerima objek atribut opsional:
attributes: {
wildCard : '*' ,
singleChar : '#' ,
escapeChar : '!' ,
matchCase : true
}
var filter = new L . Filter . Like ( 'city' , '*perm*' , { matchCase : false } ) ;
filter . toGml ( )
hasil xml:
< ogc : ogc:PropertyIsLike wildCard = " * " singleChar = " # " escapeChar = " ! " matchCase = " false " >
< ogc : PropertyName >city</ ogc : PropertyName >
< ogc : Literal >*perm*</ ogc : Literal >
</ ogc : ogc:PropertyIsLike >
Contoh:
var filter = new L . Filter . BBox ( 'ogr_geometry' , L . latLngBounds ( L . latLng ( 40.712 , - 74.227 ) , L . latLng ( 40.774 , - 74.125 ) ) , L . CRS . EPSG4326 ) ;
filter . toGml ( )
hasil xml:
< ogc : Filter xmlns : ogc = " http://www.opengis.net/ogc " >
< ogc : BBOX >
< ogc : PropertyName >ogr_geometry</ ogc : PropertyName >
< gml : Envelope xmlns : gml = " http://www.opengis.net/gml " srsName = " EPSG:4326 " >
< gml : lowerCorner >-74.227 40.712</ gml : lowerCorner >
< gml : upperCorner >-74.125 40.774</ gml : upperCorner >
</ gml : Envelope >
</ ogc : BBOX >
</ ogc : Filter >
Contoh:
var filter = new L . Filter . Intersects ( 'ogr_geometry' , L . polygon ( [ L . latLng ( 40.712 , - 74.227 ) , L . latLng ( 40.774 , - 74.125 ) , L . latLng ( 40.734 , - 74.175 ) ] ) , L . CRS . EPSG4326 ) ;
filter . toGml ( ) ;
hasil xml:
< ogc : Filter xmlns : ogc = " http://www.opengis.net/ogc " >
< ogc : Intersects >
< ogc : PropertyName >ogr_geometry</ ogc : PropertyName >
< gml : Polygon xmlns : gml = " http://www.opengis.net/gml " srsName = " EPSG:4326 " srsDimension = " 2 " >
< gml : exterior >
< gml : LinearRing srsDimension = " 2 " >
< gml : posList >-74.227 40.712 -74.125 40.774 -74.175 40.734 -74.227 40.712</ gml : posList >
</ gml : LinearRing >
</ gml : exterior >
</ gml : Polygon >
</ ogc : Intersects >
</ ogc : Filter >
Plugin pengeditan - Leaflet.Dapat diedit
L . WFST . include ( MultiEditableMixin ) ;
var wfst = new L . WFST ( {
url : 'http://myserver/geoserver/ows' ,
typeNS : 'myns' ,
typeName : 'POIPOINT' ,
style : {
color : 'blue' ,
weight : 2
}
} ) . addTo ( map ) . once ( 'load' , function ( ) {
map . fitBounds ( wfst ) ;
wfst . enableEdit ( ) ;
} ) ;
map . on ( 'editable:created' , function ( e ) {
wfst . addLayer ( e . layer ) ;
} ) ;
map . on ( 'editable:editing' , function ( e ) {
wfst . editLayer ( e . layer ) ;
} ) ;
untuk membuat metode panggilan save() permintaan POST "wfs:Transaksi", misalnya dengan Leaflet.EasyButton
L . easyButton ( 'fa-save' , function ( ) {
wfst . save ( ) ;
} , 'Save changes' ) ;
//simple layer
layer = new L . Marker ( [ 0 , 0 ] ) ;
layer . feature = {
id : 1 ,
properties : {
a : 'a' ,
b : 'b'
}
} ;
//get value by key 'a'
var a = layer . getProperty ( 'a' ) ;
//change values
layer . setProperties ( {
a : 'b' ,
b : 'a'
} ) ;
//add new property
layer . setProperties ( {
c : 'c'
} ) ;
//delete properties
layer . deleteProperties ( [ 'a' , 'b' , 'c' ] ) ;
demo untuk format baca GML
demo untuk format baca GeoJSON
filter demo bbox
Lisensi MIT