Bagaimana saya bisa menampilkan hanya beberapa kelas lapisan di UMN-mapserver?

9

Saya memvisualisasikan bentuk-lapisan di mapserver. Sekarang saya ingin membuat beberapa permintaan hanya untuk beberapa kelas pada layer ini. Saya ingin misalnya satu permintaan hanya untuk kelas air dan kemudian hanya untuk kelas kayu. Bisakah saya menyadarinya dengan server peta?

Mnementh
sumber

Jawaban:

7

Ini cara lain yang bisa Anda lakukan. Cara ini melibatkan penggunaan satu layer dengan ekspresi di setiap kelas. Ini sedikit lebih 'mahal' untuk melakukannya dengan cara ini karena melibatkan ekspresi logis, tetapi Anda mungkin tidak akan pernah melihat perbedaannya kecuali Anda menekan situasi yang benar-benar tinggi.

Setiap kelas memiliki ekspresi dua bagian. Kedua bagian ekspresi harus benar untuk fitur yang akan ditarik. Bagian pertama dari ekspresi memilih fitur-fitur yang harus jatuh ke dalam kelas itu berdasarkan pada atribut di shapefile Anda. Bagian kedua dari ekspresi mengevaluasi nilai variabel yang dilewatkan melalui url. Tidak masalah apa yang Anda beri nama variabel di url Anda (jangan gunakan kata-kata yang dicadangkan seperti 'layer'), itu hanya harus cocok dengan nama variabel dalam ekspresi Anda.

Berikut ini beberapa lapisan sampel:

LAYER
  NAME "watersheds"
  STATUS DEFAULT
  DATA 'majclip'
  TYPE POLYGON
    CLASS
       NAME "water"
       EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
       STYLE
          COLOR 0 0 255
       END
    END
    CLASS
       NAME "wood"
       EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
       STYLE
          COLOR 0 255 0
       END
    END
END

Untuk menggambar hanya fitur air, Anda akan menggunakan permintaan URL seperti ini: http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = peta & ingin = kayu

Karena ini adalah cara ketiga yang sah untuk mencapai tujuan Anda, Anda benar-benar ingin memikirkan apa tujuan Anda. Jika data Anda sering berubah, Anda mungkin ingin menggunakan opsi ini. Jika data Anda tidak sering berubah, saya pribadi akan menggunakan dua lapisan. Saya bahkan dapat membagi shapefile menjadi beberapa shapefile berdasarkan tipe penggunaan lahan jika itu meningkatkan kinerja. (Mungkin tidak, filter lapisan cukup efisien). Dengan pemetaan Web, semakin Anda mengoptimalkan data, semakin baik.

DavidF
sumber
7

Anda harus memiliki dua lapisan, satu untuk kayu dan satu untuk air. Anda dapat memiliki dua lapisan menggunakan shapefile yang sama ..

Kemudian Anda dapat memilih lapisan apa yang akan divisualisasikan secara langsung dalam permintaan dengan parameter LAPISAN. Kelas-kelas hanya mewakili bagian data yang berbeda (misalnya bagaimana data dalam lapisan itu harus dirender).

Peter
sumber
4

Jika Anda benar-benar membutuhkan semuanya dalam satu lapisan, Anda dapat menggunakan Gaya Bernama untuk mencapai hal ini. Lihat di sini untuk detail lebih lanjut. Namun, saran Peter tentang banyak lapisan adalah pendekatan yang jauh lebih sederhana.

Howard Butler
sumber