ในขณะที่วัตถุเรขาคณิต arcpy ไม่สนับสนุนเส้นโค้งจริงที่ 10.3, Esri ใช้ True Curves ใน REST API และดังนั้นจึงต้องใช้การสนับสนุน JSON สำหรับพวกเขาใน FeatureSets ดังนั้นคุณสามารถ "เคล็ดลับ" arcpy เข้าไปในการทำเช่นนี้สำหรับคุณถ้าคุณสร้างเส้นโค้งในโครงสร้าง JSON
นี่คือตัวอย่าง: สร้างไฟล์ JSON ด้วยเส้นโค้งจริง (ใช้ส่วนโค้งวงกลมและเส้นโค้ง Bezier) บางสิ่งเช่นนี้:
{ '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
}
}],
}
จากนั้นโหลดไปยังชุดคุณลักษณะและบันทึกลงในคลาสคุณลักษณะ
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
และบูมคุณมีโค้งที่แท้จริง! นี่คือสิ่งที่มันสร้างขึ้นใน ArcMap:
ดังนั้นในกรณีของคุณบางทีคุณสามารถสร้างโครงสร้าง json โดยการหล่อคุณสมบัติเดิมไปยังชุดคุณลักษณะและเล่นกับ JSON หรือตามที่คุณวนซ้ำแถวในเคอร์เซอร์ค้นหา คณิตศาสตร์อาจเป็นเรื่องยากเล็กน้อยที่จะได้รับสิ่งที่คุณต้องการ แต่ทำได้แน่นอน
ฉันควรจะพูดถึงว่าคุณไม่จำเป็นต้องสร้างชุดคุณสมบัติเต็มรูปแบบคุณสามารถส่งรูปทรงเรขาคณิตของ JSON ไปยังส่วนโดยตรงarcpy.AsShape(geojson, True)
เพื่อรับวัตถุรูปทรงเรขาคณิตกลับมาได้