Đa giác shapefile với giá trị null?


10

Có ai biết nơi tôi có thể tìm thấy một shapefile mẫu có các mục null trong đó (tốt nhất là một shapefile đa giác) không?

Tôi không chắc chắn làm thế nào để tạo một cái có null.

Câu trả lời:


10

Được cảnh báo rằng rất nhiều phần mềm đọc tệp SHP không hỗ trợ giá trị null cho hình học. Ngay cả các phiên bản cũ hơn của ArcView cũng có vấn đề.

Tôi đã tạo một mẫu ở đây: http://www.routcare.dk/temp/shp_null_sample.zip Nó có 3 bản ghi, thứ 2 không có hình học.


Phiên bản nào của ArcView? Tôi nhớ rằng AV 2.x và 3.x sẽ tạo ra hình học null mỗi khi họ tạo một shapefile mới (đối tượng 'FTab' trong Avenue), vì vậy hình học null là phổ biến và được hỗ trợ hoàn toàn.
whuber

null geoms được hỗ trợ, chúng là một giá trị hợp lệ (không xác định) cho hình học. Rắc rối là rất nhiều phần mềm sử dụng hình học mà không kiểm tra trước xem nó có rỗng không, sau đó những điều xấu xảy ra như sự cố. Đó là lý do tại sao có một công cụ gp Quản lý dữ liệu \ CheckGeometry, nếu phần mềm gặp sự cố với fc, đây thường là điều đầu tiên cần kiểm tra.
gotchula

1
Việc thêm các bản ghi mới vào một shapefile mới là một vấn đề đơn giản (ctrl-A trong View GUI của AV 3.x sẽ làm được). Chúng tự động có hình dạng null. Các hình dạng không cũng được tạo ra do kết quả của các hoạt động không hợp lệ, chẳng hạn như các hình dạng chiếu cứng nằm ngoài miền của hình chiếu. AV 3.x thường không có vấn đề gì với họ. Tôi nghĩ các vấn đề có thể phát sinh trong AV 8 trở lên: thực tế, phần mềm mới hơn của ESRI không phù hợp với thông số kỹ thuật của riêng họ.
whuber

1
@UffeKousgaard, tôi đã áp dụng một thông báo cho phần của bài đăng này liên quan đến một liên kết hiện đã chết. Bạn có thể vui lòng giải thích về câu trả lời này để ngăn chặn việc xóa bài đăng, điều này có thể dẫn đến mất danh tiếng.
Fezter

1
Các tập tin đã trở lại.
Uffe Kousgaard

10

Tôi giả sử bạn có nghĩa là null cho cột hình học / hình dạng, bởi vì shapefiles không hỗ trợ null cho bất kỳ loại trường nào ngoại trừ hình học và (tôi nghe) cho các trường ngày.

Mã dưới đây tạo 1 shapefile với 1 bản ghi / tính năng có dạng hình học null.


  import arcpy
  import os
  outfc = r'c:\temp\outfc.shp'
  arcpy.env.workspace = os.path.dirname(outfc)
  arcpy.CreateFeatureclass_management(arcpy.env.workspace,os.path.basename(outfc), 'polygon')
  cur = arcpy.InsertCursor(outfc)
  row = cur.newRow()
  cur.insertRow(row)
  del(row)
  del(cur)
  r = arcpy.CheckGeometry_management(outfc,'in_memory\\outtable')
  print r.getMessages()



Tôi chạy nó và nhận được điều này là những gì tôi mong đợi

CẢNH BÁO 000442: hình học null ở 0 trong c: \ temp \ outfc.shp


1

Nếu bạn đang làm việc trên phần mềm ESRI, ít nhất tôi có thể nói cho ArcGIS 9.3, thì shapefiles không hỗ trợ null. Tôi gặp vấn đề này vài tuần trước và dành một ngày để điều tra. Tôi tìm thấy liên kết này đặc biệt chiếu sáng http://forums.esri.com/Thread.asp?c=93&f=993&t=125464. Dường như cách duy nhất để hỗ trợ null trong các shapefiles ESRI là sử dụng cơ sở dữ liệu địa lý (sau đó các shapefiles trở thành featureclass. Tôi đã sử dụng tệp cơ sở dữ liệu địa lý). Để hỗ trợ null, cuối cùng tôi đã tạo ra một cơ sở dữ liệu địa lý và tạo ra featureclass (còn được gọi là shapefiles) bên trong tệp geodatabase (điều này sẽ hỗ trợ null) thay vì tạo một shapefile và sau đó nhập nó vào cơ sở dữ liệu địa lý (điều này sẽ không hỗ trợ null) . Nếu tôi nhớ chính xác, bạn cũng phải nêu rõ các thuộc tính trường mà bạn muốn null được hỗ trợ. Đây là liên kết có thể giúp Làm thế nào để tạo một lớp đối tượng trong cơ sở dữ liệu địa lý tệp trong ArcGIS 9.3 với Python?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.