Lagi

.net arcobjects mengambil nilai pengguna dari sumber data lapisan

.net arcobjects mengambil nilai pengguna dari sumber data lapisan


Saya memiliki kebutuhan untuk mendapatkan nilai pengguna dari properti lapisan.

Nilainya dari: Layer Properties -> Source -> user di Data Source (maaf skor tidak cukup untuk melampirkan gambar).

Saya mencoba memeriksa ILayerProperties, tetapi belum menemukan metode yang terkait dengan nilai pengguna.

Ada yang punya pengalaman?


Saya pikir Anda meminta nama pengguna koneksi SDE lapisan. Anda perlu menggunakan IWorkspace dan IPropertySet. Sesuatu seperti ini:

Redupkan pDataset As IDataset = lapisan fitur/lapisan raster yang Anda inginkan nama pengguna Dim pWorkspace As IWorkspace = pDataset.Workspace Dim pPropertySet As IPropertySet = pWorkspace.ConnectionProperties Redupkan nama pengguna As String = pPropertySet.GetProperty("USER")

IPropertySet pada dasarnya memberi Anda kamus properti dan nilainya. Jika Anda perlu mendapatkan semua properti atau semua nilai, Anda dapat memasukkannya ke dalam array:

Dim propertyNames() = Tidak ada Redup propertyValues() = Tidak ada pPropertySet.GetAllProperties(propertyNames, propertyValues)

Metode IMapServer3.QueryData

Mengembalikan kumpulan rekaman baris yang memenuhi kriteria pemilihan filter kueri untuk tabel yang ditentukan.

Ketersediaan Produk

Perkataan

Data Kueri mengembalikan catatan fitur peta dari lapisan atau baris dari tabel yang cocok dengan parameter filter kueri tertentu. QueryData mengembalikan Hasil Kueri. Format QueryResult dapat berupa Kumpulan Rekor, KMZ, JSON, atau AMF. NS Format dari QueryResult ditentukan dalam QueryResultOptions. QueryResultOptions juga dapat digunakan untuk menentukan GeoTransformasi jika diperlukan.

QueryData membutuhkan sejumlah parameter input. Ini termasuk: Nama Peta, IMapTableDeskripsi dan Filter Permintaan. QueryFilter dapat berupa kueri atribut (ekspresi SQL), kueri spasial, kueri waktu, kombinasi semua atau batal. ILayerDeskripsi2 memiliki ID Sumber properti yang dapat digunakan untuk query terhadap hasil GP.

LayerDescription untuk sebuah layer dapat diperoleh dari MapServerInfo::DefaultMapDescription sedangkan StandaloneTableDescription dapat diperoleh dengan menggunakan MapServerInfo::StandaloneTableDeskripsi Properti.

Filter Kueri

QueryFilter menyediakan kemampuan untuk query berdasarkan atribut filter (ekspresi SQL), filter spasial, filter waktu, kombinasi keduanya atau batal. Filter atribut mengambil pernyataan SQL 'non-GIS spesifik data' yang valid. Misalnya, CNTRY_CODE = BD atau POPULATION = 12345. Sintaks untuk bidang tanggal kueri bergantung pada data yang mendasarinya. Jika Anda bekerja dengan data Shapefile atau File GeoDatabase, sintaksnya adalah <FieldName> = date YYYY-MM-DD untuk Personal GeoDatabase berbasis Access, sintaksnya adalah #YYYY-MM-DD#. Untuk database SDE, periksa dengan bantuan database tertentu.

Itu dapat diatur ke batal atau Tidak ada apa-apa untuk mengambil semua data (yang juga dibatasi oleh MaxRecordCount)

Jika geometri tidak diinginkan dalam keluaran RecordSet, IQuerFilter s Subbidang harus didefinisikan tanpa bidang 'Bentuk'. Ketika SubFields kosong atau menyertakan Shape , IRecordSet akan menyertakan field "shape_length" dan "shape_area". Jika referensi spasial yang diinginkan dari geometri keluaran berbeda dari yang asli, OutputSpasialReferensi seharusnya digunakan. Jika tidak, geometri dikembalikan dalam sistem referensi spasial yang sama dengan DefaultPetaDeskripsi secara default.

Ketika SubFields tidak ditentukan atau = * , ia mengembalikan semua bidang yang terlihat. Nama bidang yang tidak terlihat atau tidak valid atau alias bidang tidak boleh disertakan dalam string SubField atau akan mengembalikan kesalahan. Anda mungkin mendapatkan daftar semua bidang yang terlihat dari IMapTableInfo::Fields. Harap dicatat bidang ObjectID selalu dikembalikan terlepas dari apakah itu ada di SubFields atau tidak. Satu-satunya harapan adalah ketika DISTINCT digunakan.

Ketika hanya nilai unik dari bidang yang diinginkan, Anda perlu mengatur Klausa Awalan = "BERBEDA". Jika Anda ingin hasil diurutkan berdasarkan bidang, atur ORDER BY <field1, bidang2. > ke Klausul Postfix. Harap perhatikan bahwa opsi ini hanya akan diterapkan jika database sumber mendukung seperti ArcSDE GeoDatabase, File GeoDatabase, dan Personal GeoDatabase.

Catatan: Fungsi kueri MapServer tidak mendukung data raster. Anda harus menghindari menyertakan bidang raster dari SubFields.

Filter Kueri Waktu

Ketika sebuah lapisan menyadari waktu (gunakan IMapTableTimeInfo::MendukungWaktu properti), kueri dapat dibuat untuk mengambil sekumpulan fitur yang tersedia pada waktu tertentu atau untuk jangka waktu tertentu. Untuk melakukan query waktu, Filter Kueri Waktu objek perlu dibuat dan diteruskan ke fungsi ini. Karena objek mengimplementasikan antarmuka IQueryFilter dan ISpatialFilter, atribut atau kueri spasial dapat digabungkan dengan waktu.

Nilai dalam StartTimeField atau Bidang Akhir Waktu dikembalikan di Layer's Referensi waktu. Jika referensi waktu yang diinginkan berbeda dari satu layer, ReferensiWaktu Keluaran harus diatur secara eksplisit.

CariBentuk

Itu hanya diperlukan untuk kueri spasial. Karena tabel tidak berisi geometri, SearchShape diabaikan saat tabel dikueri. Geometri yang diatur dalam SpatialFilter harus memenuhi kriteria berikut:

  • Itu harus memiliki Sistem Referensi Spasial yang ditentukan. Dalam kasus di mana tidak didefinisikan, sistem koordinat diasumsikan dalam sistem koordinat DataFrame
  • Itu harus menjadi salah satu geometri tingkat tinggi yaitu Point, Multipoint, Polyline, Polygon atau Multipatch. Geometri tingkat rendah mis. BezierCurve, CircularCurve harus dibungkus menjadi geometri tingkat tinggi
  • Itu harus benar secara topologi. Untuk informasi lebih lanjut, lihat bantuan di Polygon.

DefinisiEkspresi

Definisi Ekspresi dapat diatur pada lapisan atau tabel mandiri untuk membatasi fitur lapisan atau baris yang tersedia untuk tampilan atau kueri. Ekspresi ini juga dapat diatur dalam dokumen peta sumber sebagai kueri definisi. Kumpulan DefinitionExpression apa pun di LayerDescription atau StandaloneTableDescription akan menimpa kumpulan kueri definisi apa pun di peta sumber. MapServer QueryData menghormati DefinitionExpression.
Mari kita lihat beberapa contoh. Anda memiliki lapisan di peta Anda yang mewakili wilayah penjualan. Lapisan tersebut mencakup bidang REGIONS, SALES dan MANAGER.

Contoh #1: Dalam peta sumber, lapisan memiliki kueri definisi, "REGION = 'North'". Tidak ada DefinitionExpression yang ditentukan dalam LayerDescription. QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan yang termasuk dalam wilayah Utara dan dikelola oleh Bob.

Contoh #2: Dalam peta sumber, lapisan memiliki kueri definisi, "REGION = 'North'". Anda menerapkan DefinitionExpression di LayerDescription sebagai "SALES > 1000". QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan dengan penjualan lebih dari 1000 dan dikelola oleh Bob. QueryData menghormati set DefinitionExpression di LayerDescription. DefinitionExpression menimpa kueri definisi yang ditetapkan di peta sumber. Jika Anda ingin menyertakan kueri definisi asli lapisan, "REGION = 'North'" dalam kueri akhir, Anda harus menyertakan ini dalam QueryFilter, ""MANAGER = 'Bob' AND "REGION = 'North'".

Contoh #3: Di peta sumber, lapisan tidak memiliki kueri definisi. Anda menerapkan DefinitionExpression di LayerDescription sebagai "SALES > 1000". QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan dengan penjualan lebih dari 1000 dan dikelola oleh Bob. QueryData menghormati set DefinitionExpression di LayerDescription.

Untuk KML (Keyhole Markup Language), JSON (JavaScript Object Notation) atau AMF (Action Message Format), hasilnya dapat dikirimkan kembali sebagai URL (bila QueryResultOptions.Format adalah esriQueryResultKMLAsURL) atau sebagai objek MIME (bila QueryResultOptions.Format adalah esriQueryResultKMLAsMime ).

KML dikembalikan dalam format KMZ terkompresi. Menyetel LayerResultOptions tidak berpengaruh pada keluaran KML.

Kumpulan Rekor
Kapan esriQueryResultRecordSetAsObject dipilih sebagai QueryResultFormat, fungsi kembali Kumpulan Rekor sebagai Obyek. Menggunakan IQueryResult::Objek properti untuk mengaksesnya. Objek yang dikembalikan harus QI untuk IRecordSet.

Secara default, geometri dikembalikan dalam referensi spasial yang sama dengan DefaultPetaDeskripsi. Referensi spasial hasil QueryFeatureData2 dapat diatur ke sesuatu yang berbeda dari DefaultMapDescription dengan menggunakan OutputSpasialReferensi. OutputSpatialReference adalah properti dari Filter Permintaan. Untuk pengguna SOAP/WSDL, keduanya OutputSpasialReferensi & SpatialReferenceFieldName properti diperlukan dan harus diatur.

Dalam beberapa kasus, hasilnya mungkin memerlukan GeoTransformasi . Misalnya, layanan peta tertentu mungkin menggunakan sistem referensi spasial berdasarkan GCS_WGS_1984. Seorang klien ingin menampilkan hasil QueryFeatureData2 berdasarkan layanan peta ini dalam referensi spasial yang berbeda, GCS_European_1950. Hasilnya akan menggunakan referensi spasial dari DefaultMapDescription, GCS_WGS_1984, dan menampilkan hasil ini secara salah di GCS_European_1950. Fitur mungkin tidak "berbaris" dengan benar. Untuk menampilkan hasil ini dengan benar a GeoTransformasi dibutuhkan. Menerapkan GeoTransformation yang benar memastikan kebenaran spasial dari hasilnya.

Contoh lain di mana GeoTransformation mungkin perlu ditentukan dalam QueryResultsOption adalah jika lapisan yang ditanyakan diproyeksikan dengan cepat dalam layanan peta. Artinya, sistem koordinat sumber lapisan berbeda dari sistem koordinat DefaultMapDescription, dan tidak ada transformasi yang sesuai yang telah ditetapkan dalam dokumen peta sebelum disajikan. Dalam hal ini, Anda dapat mengakses sistem koordinat sumber lapisan dengan terlebih dahulu mendapatkan PetaLayerInfo, lalu dapatkan bidang dari MapLayerInfo, dapatkan Bentuknya Bidang dari Fields, dapatkan GeometriDef dari Field, dan akhirnya, dapatkan SpatialReference dari GeometryDef.

GeoTransformation tidak diperlukan jika sistem koordinat yang diproyeksikan memiliki sistem koordinat geografis dasar yang sama. Untuk hasil terbaik, optimal untuk data (lapisan dalam layanan peta), layanan peta, dan keluaran MapServer untuk menggunakan sistem koordinat yang sama.

Dalam beberapa kasus, mungkin karena alasan kinerja, Anda mungkin ingin membatasi atau menyesuaikan geometri yang dikembalikan dalam hasil kumpulan rekaman. Menggunakan ILayerResultOptions untuk mengelola ini. Jika SertakanGeometri diatur ke False, geometri tidak termasuk dalam recordset. Ini harus meningkatkan kinerja dalam kasus di mana geometri fitur besar. Anda juga dapat memilih untuk memadatkan atau menggeneralisasi geometri yang dikembalikan dengan menggunakan GeometryResultOptions. Densifikasi digunakan untuk mendukung klien yang tidak mendukung Arcs dengan lebih baik (mis. Bezier, Circular, dll.). Generalisasi mengurangi jumlah geografi yang dikirim melalui jaringan dan akan menghasilkan kinerja yang lebih baik.

Visibilitas bidang dan alias bidang

QueryData menghormati visibilitas bidang dan alias bidang yang ditetapkan dalam dokumen peta sumber. Namun, RecordSet TIDAK menghormati set pemformatan bidang apa pun di peta sumber.

Aneka ragam

Untuk mengontrol jumlah informasi yang perlu diproses oleh MapServer untuk kueri, jumlah rekaman maksimum dapat diatur. Nilai ini terkandung dalam Jumlah Rekam Maks properti di IMapServerInit2. Nilai default untuk properti ini adalah 500. Jika 600 fitur cocok dengan kueri yang diberikan, hanya 500 hasil pertama yang akan ditampilkan. Anda tidak akan dapat mengakses 100 catatan yang tersisa. Untuk dapat mengakses catatan ini, MaxRecordCount perlu ditingkatkan menjadi 600. MaxRecordCount juga dapat diubah dengan memodifikasi tag XML MaxRecordCount di file konfigurasi MapServer.

Ada dua perbedaan utama antara Menemukan dan QueryFeatureData2. Yang pertama adalah bahwa Find dapat bekerja pada banyak lapisan sementara metode kueri bekerja dengan satu lapisan. Yang kedua adalah bahwa Temukan hanya berfungsi dengan string pencarian. Metode kueri menggunakan queryFilter sebagai parameter. Ini memungkinkan kueri didasarkan pada filter atribut (ekspresi SQL) atau filter spasial.

Perbedaan utama antara QueryData & QueryFeatureData adalah bahwa yang pertama dapat mencari lapisan dan tabel dan menghormati pengaturannya mis. DefinisiEkspresi dll.

Jika IQueryFilter::SubField dan ILayerResultOption::IncludeGeometry disetel, SubField lebih diutamakan daripada IncludeGeometry. Misalnya, ketika SubField = Shape, FName, LName, Address dan IncludeGeometry = False, recordset keluaran akan berisi geometri seperti yang terdapat dalam bidang Shape.


Metode IMapServer3.QueryFeatureData2

Mengembalikan kumpulan rekaman fitur yang memenuhi kriteria pemilihan filter kueri untuk lapisan yang ditentukan.

Ketersediaan Produk

Keterangan

Catatan: ini telah digantikan oleh Data Kueri.

Perkataan

QueryFeatureData2 mengembalikan catatan fitur peta yang cocok dengan parameter filter kueri tertentu. QueryFeatureData2 mengembalikan Hasil Kueri. Format QueryResult dapat berupa KML atau Kumpulan Rekor. NS Format dari QueryResult ditentukan dalam QueryResultOptions. QueryResultOptions juga dapat digunakan untuk menentukan GeoTransformasi jika diperlukan.

QueryFeatureData2 membutuhkan sejumlah parameter input. Ini termasuk: Nama, Deskripsi Lapisan dan Filter Kueri. QueryFilter dapat berupa kueri atribut (ekspresi SQL), kueri spasial, kombinasi keduanya atau batal. ILayerDeskripsi2 memiliki ID Sumber properti yang dapat digunakan untuk query terhadap hasil GP.

Filter Kueri

QueryFilter menyediakan kemampuan untuk query berdasarkan filter atribut (ekspresi SQL) filter spasial, atau kombinasi keduanya. Filter atribut mengambil pernyataan SQL 'non-GIS spesifik data' yang valid. Misalnya, CNTRY_CODE = BD atau POPULATION = 12345. Sintaks untuk bidang tanggal kueri bergantung pada data yang mendasarinya. Jika Anda bekerja dengan data Shapefile atau File GeoDatabase, sintaksnya adalah <FieldName> = date YYYY-MM-DD untuk Personal GeoDatabase berbasis Access, sytax-nya adalah #YYYY-MM-DD#. Untuk database SDE, periksa dengan bantuan database tertentu.

Itu dapat diatur ke batal atau Tidak ada apa-apa untuk mengambil semua data (yang juga dibatasi oleh Jumlah Rekam Maks)

Jika geometri tidak diinginkan dalam keluaran RecordSet, IQuerFilter s Subbidang harus didefinisikan tanpa bidang 'Bentuk'. Ketika SubFields kosong atau menyertakan Shape , IRecordSet akan menyertakan field "shape_length" dan "shape_area". Jika referensi spasial yang diinginkan dari geometri keluaran berbeda dari yang asli, OutputSpasialReferensi seharusnya digunakan. Jika tidak, geometri dikembalikan dalam sistem referensi spasial yang sama dengan DefaultPetaDeskripsi secara default. Ketika SubFields tidak ditentukan atau = * , ia mengembalikan semua bidang yang terlihat. Nama bidang yang tidak terlihat atau tidak valid atau alias bidang tidak boleh disertakan dalam string SubField atau akan mengembalikan kesalahan. Harap dicatat bidang ObjectID selalu dikembalikan terlepas dari apakah itu ada di SubFields atau tidak. Satu-satunya harapan adalah ketika DISTINCT digunakan.

CariBentuk

Geometri yang diatur dalam ISpatialFilter harus memenuhi kriteria berikut:

  • Itu harus memiliki Sistem Referensi Spasial yang ditentukan. Dalam kasus di mana tidak didefinisikan, sistem koordinat diasumsikan dalam sistem koordinat DataFrame
  • Itu harus menjadi salah satu geometri tingkat tinggi yaitu Point, Multipoint, Polyline, Polygon atau Multipatch. Geometri tingkat rendah mis. BezierCurve, CircularCurve harus dibungkus menjadi geometri tingkat tinggi
  • Itu harus benar secara topologi. Untuk informasi lebih lanjut, lihat bantuan di poligon dan ITopologicalOperator::Sederhanakan .

DefinisiEkspresi

SEBUAH DefinisiEkspresi dapat diatur pada lapisan untuk membatasi fitur lapisan yang tersedia untuk tampilan atau kueri. Ekspresi ini juga dapat diatur dalam dokumen peta sumber sebagai kueri definisi. Kumpulan DefinitionExpression apa pun di LayerDescription akan menimpa kumpulan kueri definisi apa pun di peta sumber. MapServer QueryFeatureData2 menghormati DefinitionExpression.

Mari kita lihat beberapa contoh. Anda memiliki lapisan di peta Anda yang mewakili wilayah penjualan. Lapisan tersebut mencakup bidang REGIONS, SALES dan MANAGER.

Contoh #1: Dalam peta sumber, lapisan memiliki kueri definisi, "REGION = 'North'". Tidak ada DefintionExpression yang ditentukan dalam LayerDescription. QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan yang termasuk dalam wilayah Utara dan dikelola oleh Bob.

Contoh #2: Dalam peta sumber, lapisan memiliki kueri definisi, "REGION = 'North'". Anda menerapkan DefinitionExpression di LayerDescription sebagai "SALES > 1000". QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan dengan penjualan lebih dari 1000 dan dikelola oleh Bob. QueryFeatureData2 menghormati set DefinitionExpression di LayerDescription. DefinitionExpression menimpa kueri definisi yang ditetapkan di peta sumber. Jika Anda ingin menyertakan kueri definisi asli lapisan, "REGION = 'North'" dalam kueri akhir, Anda harus menyertakan ini dalam QueryFilter, ""MANAGER = 'Bob' AND "REGION = 'North'".

Contoh #3: Di peta sumber, lapisan tidak memiliki kueri definisi. Anda menerapkan DefinitionExpression di LayerDescription sebagai "SALES > 1000". QueryFilter Anda di mana klausa adalah "MANAGER = 'Bob'". Hasilnya adalah semua fitur wilayah penjualan dengan penjualan lebih dari 1000 dan dikelola oleh Bob. QueryFeatureData2 menghormati set DefinitionExpression di LayerDescription.

Hasilnya dapat dikembalikan dalam dua format: KML dan RecordSet.

KML
Ketika KML adalah keluaran yang diinginkan, itu diteruskan kembali sebagai URL (ketika QueryResultFormat adalah esriQueryResultKMLAsURL) atau sebagai objek MIME (bila QueryResultFormat adalah esriQueryResultKMLAsMime). File atau Mime dikembalikan dalam format KMZ terkompresi.

Menyetel LayerResultOptions tidak berpengaruh pada keluaran KML.

Kumpulan Rekor
Kapan esriQueryResultRecordSetAsObject dipilih sebagai QueryResultFormat, fungsi kembali Kumpulan Rekor sebagai Obyek. Menggunakan IQueryResult::Objek properti untuk mengaksesnya. Objek yang dikembalikan harus QI untuk IRecordSet.

Secara default, geometri dikembalikan dalam referensi spasial yang sama dengan DefaultPetaDeskripsi. Referensi spasial hasil QueryFeatureData2 dapat diatur ke sesuatu yang berbeda dari DefaultMapDescription dengan menggunakan OutputSpasialReferensi. OutputSpatialReference adalah properti dari Filter Permintaan. Untuk pengguna SOAP/WSDL, keduanya OutputSpasialReferensi & SpatialReferenceFieldName properti diperlukan dan harus diatur.

Dalam beberapa kasus, hasilnya mungkin memerlukan GeoTransformasi . Misalnya, layanan peta tertentu mungkin menggunakan sistem referensi spasial berdasarkan GCS_WGS_1984. Seorang klien ingin menampilkan hasil QueryFeatureData2 berdasarkan layanan peta ini dalam referensi spasial yang berbeda, GCS_European_1950. Hasilnya akan menggunakan referensi spasial dari DefaultMapDescription, GCS_WGS_1984, dan menampilkan hasil ini secara salah di GCS_European_1950. Fitur mungkin tidak "berbaris" dengan benar. Untuk menampilkan hasil ini dengan benar a GeoTransformasi dibutuhkan. Menerapkan GeoTransformation yang benar memastikan kebenaran spasial dari hasilnya.

Contoh lain di mana GeoTransformation mungkin perlu ditentukan dalam QueryResultsOption adalah jika lapisan yang ditanyakan diproyeksikan dengan cepat dalam layanan peta. Artinya, sistem koordinat sumber lapisan berbeda dari sistem koordinat DefaultMapDescription, dan tidak ada transformasi yang sesuai yang telah ditetapkan dalam dokumen peta sebelum disajikan. Dalam hal ini, Anda dapat mengakses sistem koordinat sumber lapisan dengan terlebih dahulu mendapatkan PetaLayerInfo, lalu dapatkan bidang dari MapLayerInfo, dapatkan Bentuknya Bidang dari Fields, dapatkan GeometriDef dari Field, dan akhirnya, dapatkan SpatialReference dari GeometryDef.

GeoTransformation tidak diperlukan jika sistem koordinat yang diproyeksikan memiliki sistem koordinat geografis dasar yang sama. Untuk hasil terbaik, optimal untuk data (lapisan dalam layanan peta), layanan peta, dan keluaran MapServer untuk menggunakan sistem koordinat yang sama.

Dalam beberapa kasus, mungkin karena alasan kinerja, Anda mungkin ingin membatasi atau menyesuaikan geometri yang dikembalikan dalam hasil kumpulan rekaman. Menggunakan ILayerResultOptions untuk mengelola ini. Jika SertakanGeometri diatur ke False, geometri tidak termasuk dalam recordset. Ini harus meningkatkan kinerja dalam kasus di mana geometri fitur besar. Anda juga dapat memilih untuk memadatkan atau menggeneralisasi geometri yang dikembalikan dengan menggunakan GeometryResultOptions. Densifikasi digunakan untuk mendukung klien yang tidak mendukung Arcs dengan lebih baik (mis. Bezier, Circular, dll.). Generalisasi mengurangi jumlah geografi yang dikirim melalui jaringan dan akan menghasilkan kinerja yang lebih baik.

Visibilitas bidang dan alias bidang

QueryFeatureData2 menghormati visibilitas bidang dan alias bidang yang ditetapkan dalam dokumen peta sumber. Namun, RecordSet tidak BUKAN menghormati pengaturan format bidang apa pun di peta sumber.

Aneka ragam

Untuk mengontrol jumlah informasi yang perlu diproses oleh MapServer untuk kueri, jumlah rekaman maksimum dapat diatur. Nilai ini terkandung dalam Jumlah Rekam Maks properti di IMapServerInit2. Nilai default untuk properti ini adalah 500. Jika 600 fitur cocok dengan kueri yang diberikan, hanya 500 hasil pertama yang akan ditampilkan. Anda tidak akan dapat mengakses 100 catatan yang tersisa. Untuk dapat mengakses catatan ini, MaxRecordCount perlu ditingkatkan menjadi 600. MaxRecordCount juga dapat diubah dengan memodifikasi tag XML MaxRecordCount di file konfigurasi MapServer.

Ada dua perbedaan utama antara Menemukan dan QueryFeatureData2. Yang pertama adalah bahwa Find dapat bekerja pada banyak lapisan sementara metode kueri bekerja dengan satu lapisan. Yang kedua adalah bahwa Temukan hanya berfungsi dengan string pencarian. Metode kueri menggunakan queryFilter sebagai parameter. Ini memungkinkan kueri didasarkan pada filter atribut (ekspresi SQL) atau filter spasial.

Hak lebih tinggi. Jika IQueryFilter::SubField dan ILayerResultOption::IncludeGeometry disetel, SubField lebih diutamakan daripada IncludeGeometry. Misalnya, ketika SubField = Shape, FName, LName, Address dan IncludeGeometry = False, recordset keluaran akan berisi geometri seperti yang terdapat dalam bidang Shape.


3 Jawaban 3

Pengecualian harus ditangani di lapisan kode yang benar-benar dapat melakukan sesuatu tentang kesalahan.

Pola "log and rethrow" sering dianggap sebagai antipattern (untuk alasan yang Anda sebutkan, mengarah ke banyak kode duplikat dan tidak benar-benar membantu Anda melakukan sesuatu yang praktis.)

Titik pengecualian adalah bahwa itu "tidak diharapkan". Jika lapisan kode tempat Anda bekerja tidak dapat melakukan sesuatu yang masuk akal untuk melanjutkan pemrosesan yang berhasil ketika kesalahan terjadi, biarkan saja menggelembung.

Jika lapisan kode tempat Anda bekerja bisa melakukan sesuatu untuk melanjutkan ketika kesalahan terjadi, itu adalah tempat untuk menangani kesalahan. (Dan mengembalikan kode respons http "gagal" dianggap sebagai cara untuk "melanjutkan pemrosesan". Anda menyimpan program agar tidak mogok.)


Menggunakan XML dengan SQL Server

Apa itu XML?

W3C menggambarkan XML sebagai "format universal untuk dokumen dan data terstruktur di Web." XML dikembangkan dan distandarisasi oleh W3C. W3C menjelaskan mengapa ia mengembangkan XML sebagai berikut: “XML terutama ditujukan untuk memenuhi persyaratan penyedia konten Web skala besar untuk markup khusus industri, pertukaran data netral vendor, penerbitan independen media, pemasaran satu lawan satu, manajemen alur kerja dalam lingkungan penulisan kolaboratif, dan pemrosesan dokumen Web oleh klien cerdas” [971208 siaran pers W3C, www.w3c.org/xml]. W3C dimaksudkan XML terutama untuk digunakan dalam aplikasi Web. Namun, kegunaan XML telah melampaui bidang itu juga digunakan dalam aplikasi standar di platform .NET Microsoft dan untuk bertukar data di antara sistem yang berbeda. XML memungkinkan pertukaran data terlepas dari platform dan bahasa pengembangannya.

XML adalah standar terbuka yang memungkinkan data dibagikan secara universal di Internet di semua platform yang mendukung XML. XML memungkinkan data terstruktur untuk dideskripsikan menggunakan format berbasis teks. Data ini kemudian dapat dikirimkan dan dipertukarkan melalui Hypertext Transport Protocol (HTTP), yang merupakan protokol yang digunakan di Web. Ketika data XML diterima, data tersebut dapat digunakan untuk tampilan dan/atau manipulasi pada klien, atau dapat digunakan untuk pertukaran data antar server. XML adalah subset yang disederhanakan dari Standard Generalized Markup Language (SGML). Meskipun XML dirancang untuk Internet, itu tidak terbatas pada aplikasi Internet. Ini dapat digunakan dalam aplikasi klien/server standar juga. Strategi .NET baru Microsoft memanfaatkan XML sebagai format pertukaran data standarnya.


12 Jawaban 12

Untuk menentukan apa jasa tanggung jawab adalah, Anda harus terlebih dahulu mendefinisikan apa melayani adalah.

Melayani bukan istilah perangkat lunak kanonik atau generik. Faktanya, akhiran Service pada nama kelas sangat mirip dengan Manajer yang banyak difitnah: Ini hampir tidak memberi tahu Anda tentang apa sebenarnya objek itu. melakukan.

Pada kenyataannya, apa yang harus dilakukan layanan sangat spesifik arsitektur:

Dalam arsitektur berlapis tradisional, melayani secara harfiah identik dengan lapisan logika bisnis. Ini adalah lapisan antara UI dan Data. Karena itu, semua aturan bisnis masuk ke layanan. Lapisan data seharusnya hanya memahami operasi CRUD dasar, dan lapisan UI hanya harus menangani pemetaan DTO presentasi ke dan dari objek bisnis.

Dalam arsitektur terdistribusi bergaya RPC (SOAP, UDDI, BPEL, dll.), melayani adalah versi logis dari fisik titik akhir. Ini pada dasarnya adalah kumpulan operasi yang ingin disediakan oleh pengelola sebagai API publik. Berbagai panduan praktik terbaik menjelaskan bahwa suatu layanan operasi sebenarnya harus menjadi operasi tingkat bisnis dan bukan CRUD, dan saya cenderung setuju.

Namun, karena perutean semuanya melalui layanan jarak jauh yang sebenarnya dapat sangat merusak kinerja, biasanya yang terbaik bukan agar layanan ini benar-benar menerapkan logika bisnis itu sendiri, mereka harus membungkus serangkaian objek bisnis "internal". Layanan tunggal mungkin melibatkan satu atau beberapa objek bisnis.

Dalam arsitektur MVP/MVC/MVVM/MV*, jasa tidak ada sama sekali. Atau jika ya, istilah ini digunakan untuk merujuk ke objek generik apa pun yang dapat disuntikkan ke pengontrol atau model tampilan. Logika bisnis ada di Anda model. Jika Anda ingin membuat "objek layanan" untuk mengatur operasi yang rumit, itu dilihat sebagai detail implementasi. Sayangnya, banyak orang mengimplementasikan MVC seperti ini, tetapi ini dianggap sebagai anti-pola (Anemic Domain Model) karena model itu sendiri tidak melakukan apa-apa, itu hanya sekumpulan properti untuk UI.

Beberapa orang secara keliru berpikir bahwa mengambil metode pengontrol 100-baris dan memasukkan semuanya ke dalam layanan entah bagaimana membuat arsitektur yang lebih baik. Itu benar-benar tidak semua yang dilakukannya adalah menambahkan lagi, mungkin lapisan tipuan yang tidak perlu. Praktis berbicara, pengontrol masih melakukan pekerjaan, itu hanya melakukannya melalui objek "pembantu" yang tidak disebutkan namanya. Saya sangat merekomendasikan presentasi Model Domain Jahat Jimmy Bogard untuk contoh yang jelas tentang cara mengubah model domain anemia menjadi model yang berguna. Ini melibatkan pemeriksaan yang cermat terhadap model yang Anda ekspos dan operasi mana yang benar-benar valid dalam a bisnis konteks.

Misalnya, jika database Anda berisi Pesanan, dan Anda memiliki kolom untuk Jumlah Total, aplikasi Anda mungkin seharusnya tidak diizinkan untuk benar-benar mengubah bidang itu ke nilai arbitrer, karena (a) sejarahnya dan (b) itu seharusnya ditentukan oleh apa di dalam urutan serta mungkin beberapa data/aturan sensitif waktu lainnya. Membuat layanan untuk mengelola Pesanan tidak serta merta menyelesaikan masalah ini, karena kode pengguna dapat tetap ambil objek Order yang sebenarnya dan ubah jumlahnya. Sebaliknya, perintah diri harus bertanggung jawab untuk memastikan bahwa itu hanya dapat diubah dengan cara yang aman dan konsisten.

Di DDD, layanan dimaksudkan secara khusus untuk situasi ketika Anda memiliki operasi yang bukan milik root agregat apa pun dengan benar. Anda harus berhati-hati di sini, karena seringkali kebutuhan akan layanan dapat menyiratkan bahwa Anda tidak menggunakan akar yang benar. Tetapi dengan asumsi Anda melakukannya, layanan digunakan untuk mengoordinasikan operasi di beberapa akar, atau terkadang untuk menangani masalah yang tidak melibatkan model domain sama sekali (seperti, mungkin, menulis informasi ke database BI/OLAP).

Salah satu aspek penting dari layanan DDD adalah diizinkan untuk menggunakan skrip transaksi. Saat bekerja pada aplikasi besar, kemungkinan besar Anda pada akhirnya akan mengalami kejadian di mana jauh lebih mudah untuk menyelesaikan sesuatu dengan prosedur T-SQL atau PL/SQL daripada repot dengan model domain. Ini OK, dan itu termasuk dalam Layanan.

Ini adalah penyimpangan radikal dari definisi arsitektur berlapis tentang layanan. Lapisan layanan merangkum objek domain, layanan DDD merangkum apa pun bukan di objek domain dan tidak masuk akal.

Dalam Arsitektur Berorientasi Layanan, a melayani dianggap sebagai otoritas teknis untuk kemampuan bisnis. Itu berarti bahwa itu adalah eksklusif pemilik subset tertentu dari data bisnis dan tidak ada hal lain yang diizinkan untuk menyentuh data itu - bahkan hanya untuk Baca dia.

Dengan kebutuhan, layanan sebenarnya merupakan proposisi ujung ke ujung dalam SOA. Artinya, layanan tidak terlalu spesifik komponen secara keseluruhan tumpukan, dan seluruh aplikasi Anda (atau seluruh bisnis Anda) adalah kumpulan layanan ini yang berjalan berdampingan tanpa persimpangan kecuali pada lapisan perpesanan dan UI. Setiap layanan memiliki datanya sendiri, aturan bisnisnya sendiri, dan UI-nya sendiri. Mereka tidak perlu mengatur satu sama lain karena mereka seharusnya selaras dengan bisnis - dan, seperti bisnis itu sendiri, setiap layanan memiliki serangkaian tanggung jawab sendiri dan beroperasi kurang lebih secara independen dari yang lain.

Jadi, menurut definisi SOA, setiap bagian dari logika bisnis dimana saja terkandung dalam layanan, tetapi sekali lagi, begitu juga keseluruhannya sistem. Layanan dalam SOA dapat memiliki komponen, dan mereka dapat memiliki titik akhir, tetapi cukup berbahaya untuk memanggil kode apa pun sebagai melayani karena bertentangan dengan arti "S" yang asli.

Karena SOA umumnya sangat tertarik pada pengiriman pesan, operasi yang mungkin Anda kemas dalam a melayani sebelumnya umumnya dienkapsulasi dalam penangan, tetapi keragamannya berbeda. Setiap handler menangani satu jenis pesan, satu operasi. Ini adalah interpretasi ketat dari Prinsip Tanggung Jawab Tunggal, tetapi menghasilkan pemeliharaan yang hebat karena setiap operasi yang mungkin ada di kelasnya sendiri. Jadi kamu tidak benar-benar membutuhkan logika bisnis terpusat, karena perintah mewakili operasi bisnis daripada yang teknis.

Pada akhirnya, dalam arsitektur apa pun yang Anda pilih, akan ada beberapa komponen atau lapisan yang memiliki sebagian besar logika bisnis. Lagi pula, jika logika bisnis tersebar di mana-mana maka Anda hanya memiliki kode spageti. Tetapi apakah Anda menyebut komponen itu a melayani, dan bagaimana desainnya dalam hal seperti jumlah atau ukuran operasi, bergantung pada tujuan arsitektur Anda.


Metodologi untuk penemuan sumber data geospasial dalam arsitektur integrasi geo-informasi berbasis ontologi

Karena kemajuan teknologi informasi, komunikasi dan penginderaan, jumlah informasi geospasial yang dihasilkan terus bertambah. Karena informasi geospasial dihasilkan dan tersedia melalui Internet oleh pemangku kepentingan yang berbeda, heterogenitas data geospasial dan sumber data geospasial menjadi tak terelakkan. Heterogenitas sumber data geospasial yang tersedia secara global ini menghadirkan tantangan besar bagi individu yang mencoba menemukan dan mengumpulkan data geospasial dari sumber data geospasial terdistribusi. Dari sudut pandang individu yang tidak termasuk dalam ranah Geo-Information System (GIS) tetapi termasuk dalam kelompok pengguna geoportal, proses penemuan dan pengaksesan data geospasial yang heterogen terbukti sulit diatur. Karena geoportal diramalkan sebagai titik tunggal penemuan dan akses ke informasi geo, pengguna geoportal mengharapkan geoportal untuk menyediakan mereka dengan mekanisme untuk dengan mudah menemukan (menemukan) apa yang mereka cari, menggunakan bahasa mereka sendiri. Mekanisme tersebut akan secara signifikan meningkatkan kegunaan dari geoportal dan kepuasan pengguna. Implementasi mekanisme tersebut sangat bergantung pada infrastruktur yang menjadi sandaran geoportal—lingkungan penyebaran informasi geo yang dapat dioperasikan.

Untuk meningkatkan kemampuan penemuan data geospasial dan meletakkan dasar pengetahuan yang dapat digunakan untuk peningkatan kegunaan geoportal, para ilmuwan dan insinyur telah mengembangkan lingkungan penyebaran informasi geo yang dapat dioperasikan berdasarkan pendekatan berikut: standarisasi sintaksis dan anotasi semantik dari sumber informasi geo yang dapat diakses Web, dan integrasi geoinformasi berbasis ontologi. Meskipun pendekatan ini meningkatkan penemuan sumber data geospasial yang heterogen dan terdistribusi, masih ada beberapa masalah yang harus ditangani untuk membuat sumber data geospasial dapat ditemukan sepenuhnya. Sebagai contoh, dalam banyak kasus pengguna geoportal tidak diberikan deskripsi eksplisit tentang arti sumber daya geospasial atau mungkin tidak tahu kata kunci apa yang harus mereka gunakan untuk menemukan informasi geo yang sesuai.

Mengingat tantangan ini, kami telah menetapkan metodologi baru yang digunakan untuk peningkatan kegunaan geoportal. Metodologi kami diperkirakan akan digunakan dalam geoportal yang mengandalkan arsitektur integrasi geo-informasi berbasis ontologi. Pendekatan yang diterapkan dalam metodologi ini menggunakan istilah yang diekstraksi dari deskripsi bahasa alami dari geo-informasi, yang ditentukan oleh pengguna akhir. Deskripsi yang ditentukan pengguna disamarkan melalui kombinasi metode disambiguasi arti kata yang tidak diawasi. Setelah disambiguasi, deskripsi ini dicocokkan dengan pengertian nama konsep ontologi (domain/lokal). Proses pencocokan dilakukan melalui pengukuran kesamaan semantik antara deskripsi yang ditentukan pengguna yang tidak ambigu dan pengertian dari konsep ontologi (domain/lokal).

Metodologi kami menyederhanakan penemuan data geospasial dan dapat dengan mudah diimplementasikan karena menggunakan komponen ontologis dari arsitektur yang mendasarinya dalam bentuk aslinya. Metodologi yang kami jelaskan dalam makalah ini akan dibahas dalam konteks solusi serupa yang menonjol. Juga, makalah ini akan menyajikan prototipe yang akan menunjukkan penerapan metodologi yang diusulkan. Prototipe yang diimplementasikan adalah aplikasi desktop yang berdiri sendiri, yang menggunakan dua sumber daya sebagai input: deskripsi geo-informasi yang ditentukan pengguna dan ontologi (domain/lokal) yang dikembangkan menggunakan Web Ontology Language (OWL). Kami akan memberikan ikhtisar manfaat atas pendekatan yang sebelumnya telah digunakan untuk penemuan data geospasial dan menawarkan panduan untuk perbaikan dan pengembangan di masa depan.


Bekerja dengan data fitur

Ringkasan Bagian ini dalam sistem Bantuan Kit pengembangan perangkat lunak (SDK) ArcObjects .NET berisi topik tentang bekerja dengan kumpulan data berbasis fitur dan baris seperti, kelas dan tabel fitur, serta fungsionalitas geodatabase umum.

Geodatabase adalah gudang data geografis yang dibangun di atas sistem manajemen basis data relasional standar industri (RDBMS). Geodatabases bekerja di berbagai arsitektur sistem manajemen basis data (DBMS), dan sistem file datang dalam berbagai ukuran dan memiliki jumlah pengguna yang bervariasi. Mereka dapat menskala dari database pengguna tunggal kecil yang dibangun di atas file hingga kelompok kerja, departemen, dan geodatabase perusahaan yang lebih besar yang diakses oleh banyak pengguna.

Pustaka geodatabase menyediakan antarmuka pemrograman aplikasi (API) untuk geodatabase. Objek di perpustakaan menyediakan model pemrograman terpadu untuk semua sumber data yang didukung di ArcGIS, termasuk geodatabase jarak jauh, geodatabase lokal, dan sumber data berbasis file. Pustaka ini mendefinisikan banyak kelas dan antarmuka yang digunakan lebih tinggi dalam arsitektur.

Beberapa topik berfokus pada sumber data selain geodatabase, misalnya, kumpulan data dan shapefile desain berbantuan komputer (CAD). Meskipun ada perbedaan penting yang harus diperhatikan ketika mengembangkan terhadap sumber data ini, ada banyak kesamaan dan alur kerja umum antara ini dan geodatabase.

Topik ini menyoroti elemen inti dari geodatabase yang harus dipahami oleh pengembang aplikasi untuk memanfaatkan API geodatabase secara efektif. Ini juga berisi ikhtisar singkat tentang pemrograman dengan kumpulan data yang kompleks dan kustomisasi geodatabase. Karena ini adalah topik ikhtisar, referensi tertaut ke topik Bantuan Desktop ArcGIS yang lebih rinci, topik pemrograman langkah-demi-langkah, dan contoh kode lengkap dapat ditemukan di bawah setiap bagian dalam topik ini.


Kata kunci

Vassilios Vescoukis: Dr. Vassilios Vescoukis lahir di Athena, Yunani pada tahun 1967. Ia menerima diploma dan Ph.D. Gelar dari Sekolah Teknik Elektro dan Komputer Universitas Teknik Nasional Athena, masing-masing pada tahun 1991 dan 1996. Saat ini menjabat sebagai Asisten Profesor di School of Surveying Engineering NTUA. Minat penelitiannya meliputi dukungan penalaran dalam pengembangan perangkat lunak, aplikasi perangkat lunak heterogen terdistribusi, layanan pengoptimalan nilai tambah, dan sistem berbasis pengetahuan.

Nikolaos Doulamis: Nikolaos D. Doulamis received his Diploma degree in Electrical and Computer Engineering from the National Technical University of Athens (NTUA) in 1995 with the highest honor and his Ph.D. degree in electrical and computer engineering from NTUA in 2000. He joined the Image, Video and Multimedia Lab of NTUA in 1996 as research assistant. His Ph.D. thesis was supported by the Bodosakis Foundation Scholarship. He has elected as Assistant Professor in the National Technical University of Athens.

Dr. Doulamis was awarded as the Best Greek Student in the field of engineering in national level by the Technical chamber of Greece in 1995. In 1996, he was received the Best Graduate Thesis Award in the area of electrical engineering with A. Doulamis. During his studies he has also received several prizes and awards from the National Technical University of Athens, the National Scholarship Foundation and the Technical Chamber of Greece. In 1997, he was given the NTUA Medal as Best Young Engineer. In 2000, he was served as Chairman of the technical program committee of the VLBV’01 workshop, while he has also served on the program committees in several international conferences and workshops. In 2000, he was given the Thomaidion Foundation best journal paper award in conjunction with A. Doulamis. He is editor in the Who is Who bibliography. He is a reviewer of IEEE journals and conferences as well as and other leading international journals.

His research interests include video transmission, service engineering, content-based image retrieval, summarization of video sequences and intelligent techniques for video processing.


An Integrated WebGIS Framework for Volunteered Geographic Information and Social Media in Soil and Water Conservation

Volunteered geographic information and social networking in a WebGIS has the potential to increase public participation in soil and water conservation, promote environmental awareness and change, and provide timely data that may be otherwise unavailable to policymakers in soil and water conservation management. Tujuan dari penelitian ini adalah: (1) untuk mengembangkan kerangka kerja untuk menggabungkan teknologi saat ini, kemajuan komputasi, sumber data, dan media sosial dan (2) mengembangkan dan menguji antarmuka pemetaan web online. The mapping interface integrates Microsoft Silverlight, Bing Maps, ArcGIS Server, Google Picasa Web Albums Data API, RSS, Google Analytics, and Facebook to create a rich user experience. Situs web memungkinkan publik untuk mengunggah foto dan atribut dari subdivisi atau situs mereka sendiri yang telah mereka identifikasi dan menjelajahi kiriman lainnya. Situs web ini tersedia untuk umum pada awal Februari 2011 di http://www.AbandonedDevelopments.com dan dievaluasi untuk potensi keberhasilan jangka panjangnya dalam studi percontohan.

Ini adalah pratinjau konten langganan, akses melalui institusi Anda.


Tonton videonya: Whats New in ArcGIS Data Reviewer