Ví dụ về tính năng dữ liệu kiểu

Chọn nền tảng: Android iOS JavaScript

Trang này trình bày cách truy cập một tập dữ liệu theo phương thức lập trình và tạo kiểu cho các tính năng của tập dữ liệu đó, và hướng dẫn bạn về các ví dụ tạo kiểu cho các đối tượng dữ liệu dựa trên điểm, đa giác, và hình nhiều đường.

Định kiểu theo hướng dữ liệu cho các tập dữ liệu kết xuất các tính năng dữ liệu dựa trên vĩ độ đã cung cấp và kinh độ từ tệp dữ liệu không gian địa lý được dùng để tạo tập dữ liệu.

Ví dụ về định kiểu dữ liệu điểm

Ví dụ này cho thấy một cách tiếp cận các tính năng dữ liệu dựa trên hình học điểm.

Ảnh chụp màn hình hiển thị dữ liệu điểm được tạo kiểu.

Giới thiệu về tập dữ liệu

Tập dữ liệu được dùng trong ví dụ này là kết quả của một khảo sát năm 2018 cho sóc ở Công viên Trung tâm, Thành phố New York. Trong phần trích dẫn sau từ tệp dữ liệu CSV, cột xy dùng cho vị trí địa lý; cột LatLng được bao gồm, nhưng không được sử dụng trong ví dụ này vì tập dữ liệu chỉ hỗ trợ Định dạng WKT nếu cột có tên là WKT. Để biết thêm thông tin về các định dạng được hỗ trợ để biết vị trí, hãy xem Yêu cầu đối với tệp CSV.

Tập dữ liệu điều tra dân số sóc chứa rất nhiều điểm dữ liệu khác nhau liên quan đến màu sắc lông thú quan sát được và hành vi của sóc (hãy nhớ cuộn theo chiều ngang để xem tất cả).

X UniqueSquirrelID Hecta Shift Ngày Số hectare Squirrel Tuổi PrimaryFurColor HighlightFurColor CombinationofPrimaryandHighlightColor Màu ghi chú Vị trí Đo lường trên không gian ngắm cảnh SpecificLocation Chạy Đuổi theo Leo núi Ăn Hái lượm Hoạt động khác Tiếng Kuks Quaas Tiếng rên rỉ Cờ đuôi Ống uốn cong đuôi dài Phương pháp Trung lập Runsfrom OtherInteractions LatLng
-73,9561344937861 40,7940823884086 37F-PM-1014-03 37°C CH 10142018 3 + false false false false false false false false false false false false false ĐIỂM (-73.9561344937861 40.7940823884086)
-73,9688574691102 40,7837825208444 21B-AM-1019-04 21 TỶ SA 10192018 4 + false false false false false false false false false false false false false ĐIỂM (-73.9688574691102 40.7837825208444)
-73,9742811484852 40,775533619083 11B-PM-1014-08 11 TỶ CH 10142018 8 Xám Xám+ Trên mặt đất 10 false đúng false false false false false false false false false false false ĐIỂM (-73.97428114848522 40.775533619083)
-73,9596413903948 40,7903128889029 32E-PM-1017-14 32E CH 10172018 14 Người lớn Xám Xám+ Chưa có mục nào được chọn làm danh sách Chính. Đã chọn màu xám làm Điểm nổi bật. Đã thực hiện các điều chỉnh về mặt thực thi. false false false đúng đúng false false false false false false false đúng ĐIỂM (-73.9596413903948 40.7903128889029)
-73,9702676472613 40,7762126854894 13E-AM-1017-05 13E SA 10172018 5 Người lớn Xám Cây quế Xám+Quế Trên mặt đất trên gốc cây false false false false đúng false false false false false false false false ĐIỂM (-73.9702676472613 40.7762126854894)
-73,9683613516225 40,7725908847499 11H-AM-1010-03 11 giờ SA 10102018 3 Người lớn Cây quế Trắng Quế+Trắng false false false false đúng false false false false đúng false đúng false ĐIỂM (-73.9683613516225 40.7725908847499)
-73,9541201789795 40,7931811701082 36H-AM-1010-02 36 giờ SA 10102018 2 Người lớn Xám Xám+ ngay bên ngoài ha Trên mặt đất FALSE false false false false đúng false false false false false false false false ĐIỂM (-73.9541201789795 40.7931811701082)

Tạo kiểu cho các đối tượng dữ liệu điểm

Mã trong ví dụ này sử dụng phương pháp định kiểu cho màu nền và màu nét vẽ cho từng điểm dựa trên CombinationofPrimaryandHighlightColor Thuộc tính này kết hợp màu lông thú chính và phụ cho mỗi màu sóc.

Kotlin

private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Set default colors to to yellow and point radius to 8. var fillColor = Color.YELLOW var strokeColor = Color.YELLOW var pointRadius = 8F // Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
val furColors: MutableMap<String, String> = feature.getDatasetAttributes() // Determine CombinationofPrimaryandHighlightColor attribute. val furColor = furColors!!["CombinationofPrimaryandHighlightColor"] when (furColor) { "Black+" -> { fillColor = Color.BLACK strokeColor= Color.BLACK } "Cinnamon+" -> { fillColor = -0x750000 strokeColor= -0x750000 } "Cinnamon+Gray" -> { fillColor = -0x750000 strokeColor= -0x750000 pointRadius = 6F } "Cinnamon+White" -> { fillColor = -0x750000 strokeColor= Color.WHITE pointRadius = 6F } "Gray+" -> fillColor = Color.GRAY "Gray+Cinnamon" -> { fillColor = Color.GRAY strokeColor= -0x750000 pointRadius = 6F } "Gray+Cinnamon, White" -> { fillColor = Color.LTGRAY strokeColor= -0x750000 pointRadius = 6F } "Gray+White" -> { fillColor = Color.GRAY strokeColor= Color.WHITE pointRadius = 6F } } return@StyleFactory FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .pointRadius(pointRadius) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

Java

private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
// Determine CombinationofPrimaryandHighlightColor attribute. Map<String, String> furColors = ((DatasetFeature) feature).getDatasetAttributes(); String furColor = furColors.get("CombinationofPrimaryandHighlightColor"); // Set default colors to to yellow and point radius to 8. int fillColor = Color.YELLOW; int strokeColor = Color.YELLOW; int pointRadius = 8; switch (furColor) { case "Black+": fillColor = Color.BLACK; strokeColor = Color.BLACK; break; case "Cinnamon+": fillColor = 0xff8b0000; strokeColor = 0xff8b0000; break; case "Cinnamon+Gray": fillColor = 0xff8b0000; strokeColor = Color.GRAY; pointRadius = 6; break; case "Cinnamon+White": fillColor = 0xff8b0000; strokeColor = Color.WHITE; pointRadius = 6; break; case "Gray+": fillColor = Color.GRAY; strokeColor = Color.GRAY; break; case "Gray+Cinnamon": fillColor = Color.GRAY; strokeColor = 0xff8b0000; pointRadius = 6; break; case "Gray+Cinnamon, White": fillColor = Color.LTGRAY; strokeColor = 0xff8b0000; pointRadius = 6; break; case "Gray+White": fillColor = Color.GRAY; strokeColor = Color.WHITE; pointRadius = 6; break; default: fillColor = Color.YELLOW; strokeColor = Color.YELLOW; pointRadius = 8; } return new FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .pointRadius(pointRadius) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

Ví dụ về định kiểu dữ liệu cho đa giác

Ví dụ này cho thấy một phương pháp định kiểu các tính năng dữ liệu dựa trên hình học đa giác.

Ảnh chụp màn hình hiển thị dữ liệu đa giác được tạo kiểu.

Giới thiệu về tập dữ liệu

Tập dữ liệu được sử dụng trong ví dụ này mô tả các công viên ở Thành phố New York. Phần trích dẫn sau đây từ tệp GeoJSON của tập dữ liệu cho thấy một đại diện mục nhập tính năng.

{
  "type": "Feature",
  "properties": {
    "jurisdiction": "DPR",
    "mapped": "False",
    "zipcode": "11356",
    "acres": "0.05",
    "location": "College Pl., College Pt. Blvd., bet. 11 Ave. and 12 Ave.",
    "nys_assembly": "27",
    "councildistrict": "19",
    "url": "http://www.nycgovparks.org/parks/Q042/",
    "typecategory": "Triangle/Plaza",
    "us_congress": "14",
    "eapply": "Poppenhusen Park",
    "parentid": "Q-07",
    "gispropnum": "Q042",
    "retired": "false",
    "communityboard": "407",
    "objectid": "6248",
    "globalid": "F4810079-CBB9-4BE7-BBFA-B3C0C35D5DE5",
    "name311": "Poppenhusen Park",
    "department": "Q-07",
    "pip_ratable": "true",
    "subcategory": "Sitting Area/Triangle/Mall",
    "precinct": "109",
    "permit": "true",
    "acquisitiondate": null,
    "omppropid": "Q042",
    "gisobjid": "100000301",
    "signname": "Poppenhusen Park",
    "address": null,
    "permitparent": "Q-07",
    "class": "PARK",
    "nys_senate": "11",
    "permitdistrict": "Q-07",
    "borough": "Q",
    "waterfront": "false"
  },
  "geometry": {
    "type": "MultiPolygon",
    "coordinates": [
      [
        [
          [
            -73.84575702371716,
            40.78796240884273
          ],
          [
            -73.84593393292693,
            40.78796857347548
          ],
          [
            -73.84577256469657,
            40.787651355629556
          ],
          [
            -73.84575702371716,
            40.78796240884273
          ]
        ]
      ]
    ]
  }
},

Tạo kiểu cho các đối tượng dữ liệu đa giác

Mã trong ví dụ này áp dụng màu đặc biệt cho các đối tượng dữ liệu được liên kết với typecategory là "Chưa phát triển" hoặc "Đỗ xe" và tô màu tất cả các màu khác màu xanh lục.

Kotlin

private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) { // Determine the value of the typecategory attribute. val typeCategories: MutableMap<String, String> = feature.getDatasetAttributes() val typeCategory = typeCategories!!["typecategory"] // Set default colors to green. var fillColor = 0x4000ff00 var strokeColor = 0xff00ff00 when (typeCategory) { "Undeveloped" -> { // Color undeveloped areas blue. fillColor = 0x400000ff strokeColor = 0x400000ff } "Parkway" -> { // Color parkway areas red. fillColor = 0x40ff0000 strokeColor = 0x40ff0000 } else -> { // Color all other areas green. fillColor = 0x4000ff00 strokeColor = 0xff00ff00 } } return Builder() .fillColor(fillColor) .strokeColor(strokeColor) .strokeWidth(2F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

Java

private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
// Determine the value of the typecategory attribute. Map<String, String> typeCategories = ((DatasetFeature) feature).getDatasetAttributes(); String typeCategory = typeCategories.get("typecategory"); // Set default colors to green. int fillColor = 0x4000ff00; int strokeColor = 0xff00ff00; switch (typeCategory) { case "Undeveloped": // Color undeveloped areas blue. fillColor = 0x400000ff; strokeColor = 0xff0000ff; break; case "Parkway": // Color parkway areas red. fillColor = 0x40ff0000; strokeColor = 0xffff0000; break; default: // Color all other areas green. fillColor = 0x4000ff00; strokeColor = 0xff00ff00; } return new FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

Ví dụ về định kiểu dữ liệu nhiều đường

Ví dụ này cho thấy một phương pháp tạo kiểu cho các tính năng dữ liệu dựa trên hình nhiều đường.

Ảnh chụp màn hình cho thấy dữ liệu hình nhiều đường đã được tạo kiểu.

Giới thiệu về tập dữ liệu

Tập dữ liệu được sử dụng trong ví dụ này cho thấy những cây cầu trong khu vực Seattle. Chiến lược phát hành đĩa đơn phần trích dẫn sau đây từ tệp GeoJSON của tập dữ liệu cho thấy một tính năng đại diện mục nhập.

{
  "type": "Feature",
  "properties": {
      "OBJECTID": 1,
      "COMPTYPE": 66,
      "COMPKEY": 515774,
      "HANSEGKEY": 489781,
      "UNITID": "BRG-935",
      "UNITTYPE": " ",
      "BRGUNITID": "BRG-935",
      "UNITDESC_BRG": "YALE AVE BR REV LANE OC                                                                                                                                                                                                                                        ",
      "UNITDESC_SEG": "HOWELL ST ON RP BETWEEN HOWELL ST AND I5 SB                                                                                                                                                                                                                    ",
      "INSTDATE": null,
      "EXPDATE": null,
      "STATUS": " ",
      "STATUSDT": null,
      "CONDITION": " ",
      "CONDDT": null,
      "OWN": " ",
      "LSTVERIFY": null,
      "MAINTBY": " ",
      "ADDBY": "GARCIAA",
      "ADDDTTM": "2010-01-21T00:00:00Z",
      "MODBY": null,
      "MODDTTM": null,
      "BR_NBR": 935,
      "BR_CODE": " 935",
      "BR_TYPE": "ST",
      "BR_NAME": "YALE AVE BR REV LANE OC",
      "BR_FACILITIES": "YALE AVE-SR 5 ON RAMP",
      "BR_FEATURES": "SR 5 REV LANE",
      "BR_RATING": 0,
      "BR_INSET": 1,
      "BR_GEO": "DT",
      "BR_OWNER": "DOT",
      "BR_OWNER_NAME": "State of Washington",
      "GEOBASID": 0,
      "XGEOBASID": 0,
      "GISSEGKEY": 489781,
      "EARTHQUAKE_RESPONSE_TEAM": " ",
      "SHAPE_Length": 220.11891836147655
  },
  "geometry": {
      "type": "LineString",
      "coordinates": [
          [
              -122.329201929090928,
              47.616910448708538
          ],
          [
              -122.329206483407461,
              47.616976719821004
          ],
          [
              -122.32921802149356,
              47.617042137515213
          ],
          [
              -122.329236413912909,
              47.617105967923777
          ],
          [
              -122.329261454336034,
              47.617167494985758
          ],
          [
              -122.329292861855023,
              47.617226028479571
          ],
          [
              -122.329330284134699,
              47.617280911766009
          ],
          [
              -122.329373301365223,
              47.617331529154569
          ],
          [
              -122.329421430971635,
              47.617377312810319
          ],
          [
              -122.329474133027375,
              47.617417749124023
          ],
          [
              -122.32953081631139,
              47.617452384473893
          ]
      ]
  }
},

Tạo kiểu cho các đối tượng dữ liệu hình nhiều đường

Đoạn mã sau đây áp dụng cùng một kiểu cho trực tiếp cho tất cả các đối tượng dữ liệu.

Kotlin

private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
return@StyleFactory FeatureStyle.Builder() // Define a style with green stroke with a width of 4. .strokeColor(0xff00ff00.toInt()) .strokeWidth(4F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

Java

private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
return new FeatureStyle.Builder() // Define a style with green stroke with a width of 4. .strokeColor(0xff00ff00) .strokeWidth(4) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }