Tạo đa giác hình elip đường cong thực trong cơ sở dữ liệu địa lý tệp bằng ArcPy?


9

Làm nền, câu hỏi này nảy sinh từ việc cố gắng trả lời một câu hỏi về Cách tạo đa giác chồng chéo từ đầu ra dòng từ công cụ Table To Ellipse?

Sử dụng GUI ArcMap 10.1, rất dễ dàng số hóa các đa giác đường cong thực sự thành một lớp tính năng cơ sở dữ liệu địa lý tệp bằng cách sử dụng Công cụ xây dựng Ellipse nhưng ...

Có thể viết đa giác hình elip đường cong thật trong khi đọc các hàng (arcpy.da.SearchCoder) từ một bảng chứa một điểm trung tâm, một trục chính, một trục nhỏ và một góc phương vị cho mỗi?

Tôi đã hy vọng rằng có thể có một mã thông báo có sẵn với arcpy.da.InsertCoder để làm điều này, nhưng SHAPE@dường như bị giới hạn bởi những gì đối tượng Geometry hỗ trợ và dường như không bao gồm các đường cong thực sự.


1
Tôi đã tìm kiếm xung quanh, và điều duy nhất tôi thấy có thể hơi hữu ích là điều này .
Paul

1
Và vì thế, câu hỏi và trả lời này có thể hữu ích: gis.stackexchange.com/questions/80/ mẹo
blord-castillo 20/07/13

Nếu bạn muốn viết câu trả lời về điều này, tôi sẽ vui vẻ nâng cấp nhưng tôi có thể sẽ để lại Chấp nhận cho ArcPy mà không có câu trả lời ArcObjects (mà tôi sẽ cung cấp bằng cách liên kết với Ý tưởng ArcGIS nếu không có ai khác).
PolyGeo

Tôi biết đây là một bài viết cũ, nhưng tôi đã tìm thấy một cách giải quyết để làm điều này với arcpy. Nó đòi hỏi một số toán học, nhưng xem câu trả lời của tôi dưới đây.
crmackey

Câu trả lời:


11

Mặc dù các đối tượng Hình học Arcpy không hỗ trợ các đường cong thực, vào lúc 10.3, Esri đã triển khai Đường cong thật trong API REST và do đó phải triển khai hỗ trợ JSON cho chúng trong FeatureSets. Vì vậy, bạn có thể "lừa" arcpy để làm điều này cho bạn nếu bạn tạo một đường cong trong cấu trúc JSON .

Dưới đây là một ví dụ: tạo tệp JSON với các đường cong thực (điều này sử dụng cung tròn và đường cong Bezier), đại loại như sau:

{   'fieldAliases': {
        'Id': 'Id',
        'FID': 'FID'
    },
    'fields': [{
        'alias': 'FID',
        'type': 'esriFieldTypeOID',
        'name': 'FID'
    }, {
        'alias': 'Id',
        'type': 'esriFieldTypeInteger',
        'name': 'Id'
    }],
    'displayFieldName': '',
    'spatialReference': {
        'wkid': 103734,
        'latestWkid': 103734
    },
    'geometryType': 'esriGeometryPolyline'
    'features': [{
        'geometry': {
                      "curvePaths":[[
                        [6,3],[5,3],
                        {"b":[[3,2],[6,1],[2,4]]},
                        [1,2],
                        {"a":[[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333]}
                      ]]
                    },
        'attributes': {
            'Id': 0,
            'FID': 0
        }
    }],
}

Sau đó, tải nó vào một bộ tính năng và lưu nó vào một lớp Tính năng.

fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')

Và bùng nổ, bạn có những đường cong thực sự! Đây là những gì nó được tạo trong ArcMap:

nhập mô tả hình ảnh ở đây

Vì vậy, trong trường hợp của bạn, có thể bạn có thể xây dựng cấu trúc json bằng cách chuyển các tính năng gốc thành một bộ tính năng và chơi với JSON hoặc khi bạn lặp qua các hàng trong một con trỏ tìm kiếm. Toán học có thể hơi khó để đạt được những gì bạn muốn, nhưng chắc chắn là có thể thực hiện được.


Tôi cũng nên đề cập rằng bạn không phải tạo thành một bộ tính năng đầy đủ, bạn chỉ có thể chuyển trực tiếp hình học JSON vào arcpy.AsShape(geojson, True)để lấy lại một đối tượng hình học.


1

Chúng tôi gặp vấn đề tương tự khi chúng tôi phải rút hàng trăm bưu kiện từ các mô tả pháp lý vào cơ sở dữ liệu địa lý. Các công cụ COGO là thứ duy nhất cho phép chúng ta vẽ và giữ các đường cong thực sự. Thật không may, các công cụ COGO không có kịch bản.

Tuy nhiên, chúng tôi đã có thể chuyển đổi các mô tả pháp lý sang định dạng txt, theo đó chúng tôi có thể tải chúng vào cửa sổ ngang để tạo các hình dạng của chúng tôi. Tùy thuộc vào định dạng bảng, bạn có thể (sử dụng Python) chuyển đổi các bảng của mình thành txt và sau đó tải chúng vào cửa sổ ngang.


Hôm nay tôi đã cố gắng nhập các đường viền đường cong thực sự vào FGDB và chạy qua bổ trợ chuyển đổi Curve . Không chắc chắn nếu nó giúp, nhưng nghĩ rằng nó hữu ích cho việc điều khiển các đường cong thực sự.

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.