public static FeatureCollection find(MapLayer queryLayer,
DefaultMapLayer highlightLayer) {
try {
if (mapContext.indexOf(highlightLayer) ==
(mapContext.getLayerCount() - 1)) {
mapContext.removeLayer(highlightLayer);
}
queryLayer = mapContext.getLayer(mapContext.getLayerCount() - 1);
String queryLayerName = queryLayer.getFeatureSource().getSchema().getTypeName();
FeatureSource fs = utils.DataUtils.getFeatureSoureFromDatabase(queryLayerName);
FeatureCollection fc = fs.getFeatures().collection();
FeatureCollection result = FeatureCollections.newCollection();
if (utils.DataUtils.isInteger(findValue)) {
Iterator iterator = fc.iterator();
for (int i = 0; iterator.hasNext(); i++) {
Feature feature = (Feature) iterator.next();
Object r = feature.getAttribute(findCondition);
String st = r.toString();
if (st.equals(findValue)) {
result.add(feature);
}
}
} else {
Iterator iterator = fc.iterator();
for (int i = 0; iterator.hasNext(); i++) {
Feature feature = (Feature) iterator.next();
Object r = feature.getAttribute(findCondition);
if (r.equals(findValue)) {
result.add(feature);
}
}
}
return result;
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
Tìm kiếm trong khoảng, tìm kiếm lớn nhất, nhỏ nhất
Lưu ý: Các chức năng này chỉ áp dụng cho tìm kiếm về dân số trên lớp rghc của chương trình
Ngoài cách sử dụng Filter như đã thực hiện với Shape file như trên, tôi xin đưa ra them một cách thực hiện khác
Mô tả cách thức hoạt động:
Chỉ khi ta chọn kiểu tìm kiếm trong choice (1) là thuộc về dân số thì giao diện tìm kiếm trong khoảng, tìm kiếm lớn nhất, nhỏ nhất mới xuất hiện như sau:
(1)
(a)
(2)
(3)
(4)
(5)
(6)
(b)
Hình 3.42. Chức năng tìm kiếm về dân số
Người dùng có thể lựa chọn một trong các cách tìm kiếm sau (lưu ý khi muốn chọn kiểu tìm kiếm nào thì cần chọn nút check tương ứng với kiểu tìm kiếm nằm trước nó)
Tìm dân số theo tên xã: chọn giá trị tên xã trong choice (2): Việc tìm kiếm này được thực hiện như phần tìm kiếm bằng đã đề cập ở phần trước và chọn (a).
Tìm dân số nhỏ nhất trong năm tương ứng của choice (1): chọn (3)
Tìm dân số lớn nhất trong năm tương ứng của choice (1): chọn (4)
Tìm dân số trong khoảng: cần chọn (b). Ta có thể nhập đầy đủ hoặc chỉ nhập thông tin vào một trong hai vùng (5), (6) thì chức năng tìm kiếm vẫn thực hiện được chỉ cần lưu ý rằng thông tin nhập vào phải là số nguyên.
Sau khi kết quả được thực hiện, thông tin thuộc tính hiển thị và đồng thời kết quả này cũng được thể hiện trên bản đồ.
Các phương thức thực hiện các chức năng này tham khảo trong lớp FindFeatures của gói handler.
Ví dụ: Tìm kiếm dân số năm 1991
Tìm xã có dân số nhỏ nhất
Hình 3.43 Tìm kiếm nhỏ nhất
Tìm xã dân số lớn nhất
Hình 3.44 Tìm kiếm lớn nhất
Tìm các xã có dân số trong khoảng từ
Hình 3.45 Tìm kiếm trong khoảng
Chia sẻ với bạn bè của bạn: |