ArcPy lỗi NIM059845
Mấy hôm nay Mr.iGIS cần dùng ArcPy viết một số geoprocessing script cho ArcGIS 10 thì phát hiện ra là hiện tại ArcPy đang bị lỗi trong xử lý các đối tượng hình học.
Với lỗi NIM059845, ArcPy tạo các đối tượng hình học có độ chính xác thấp. Kết quả là các phép so sánh hình học (ví dụ within) hoàn toàn không chính xác. Mặc dù lỗi đã được khắc phục trong Service Pack 2 (SP2) nhưng SP2 này chưa được ban hành. Trong lúc này, chúng ta có thể khắc phục bằng cách kèm theo tham chiếu không gian (spatial reference) khi tạo đối tượng hình học.
Ví dụ Mr.iGIS muốn kiểm tra polygonA có nằm trong (within) polygonB không.
Không viết code thế này:
polygonA = arcpy.Polygon(point_arrayA)
polygonB = arcpy.Polygon(point_arrayB)
polygonA.within(polygonB) #kết quả này có thể trả về False mặc dù trên thực tế polygon A hoàn toàn nằm trong polygonB
Để khắc phục lỗi, ta phải viết thế này:
polygonA = arcpy.Polygon(point_arrayA, spatial_reference)
polygonB = arcpy.Polygon(point_arrayB, spatial_reference)
polygonA.within(polygonB)
Trong đó spatial_reference là tham chiếu không gian có thể được lấy từ một shapefile hoặc từ file .prj. Ví dụ:
spatial_reference = arcpy.Describe("d:/temp/shapefile.shp").spatialReference
polygonA = arcpy.Polygon(point_arrayA, spatial_reference)
polygonB = arcpy.Polygon(point_arrayB, spatial_reference)
polygonA.within(polygonB)
Tham khảo thêm tại đây.
Chúc các bạn thành công.
Mr.iGIS





2 comments:
Cảm ơn, bài viết hữu ích
This is not the first of your posts I've read, and you never cease to amaze me. Thank you, and I look forward to reading more.
UK Education Consultants
Post a Comment