2016-06-06 3 views
0

Я использовал формулу для создания координаты X и Y, из которой я хотел бы создать точку. Они хранятся в таблице атрибутов, и я не знаю, как использовать эти точки для геометрии. Вот код:Попытка создать точку из X, Y, координаты

cursor01 = arcpy.da.InsertCursor(OutPutCent,["[email protected]", "[email protected]","Xcoord","Ycoord","totpop", "NAME","STATE_NAME","POLY_ID", "OBJECTID", "STATE_FIPS", "CNTY_FIPS", "FIPS", "FIPSnum","FIPS_NUMER" ]) 
#if row[0] >= 5.2: 
cursor01.insertRow([XPoint,YPoint,centroid_X1,centroid_Y1,TotalPop1,thecntyName1,TheStateName1,idpoly1, idobject1, stateFIPS1, countyFIPS1, fips1, fipSnum1, fipsNumer1]) 

Любые предложения были бы очень благодарны Мне нужно решить эту проблему как можно скорее! Best

ответ

0

Возможно, это должно быть в gis.stackexchange.com.

Трудно сказать, на что вы нацелены на этот код, но у меня все равно будет предположение ... Если у вас есть существующие точки, которые вы хотите переместить на основе обновленных координат в таблице атрибутов, попробуйте один из следующий.

Простое решение не-сценариев заключается в следующем:

  • экспорт вашей таблицы атрибутов в CSV
  • использование Добавить XY данных для импорта CSV в качестве нового слоя

В процессе импорта вы можете установить геометрию в поля атрибута Xcoord, Ycoord, поэтому новый набор данных будет иметь обновленные местоположения. Затем просто обрезайте любые записи, которые вам не нужны, - похоже, вы фильтруете какую-то ценность? Выберите по атрибутам и удалите строки, которые не соответствуют вашему состоянию.

В качестве альтернативы, структурно правильный шаблон обновить существующую геометрию с новыми координатами из таблицы является атрибут объявления:

with arcpy.da.UpdateCursor(dataset, ['[email protected]', 'point_unique_id_or_name', 'conditional_field', 'X_coord', 'Y_coord']) as cursor: 
    update_count = 0 
    for row in cursor: 
     if row[conditional_field_index] meets condition: 
      updated_point = (row[X_coord_index], row[Y_coord_index]) 
      row[[email protected]_index] = updated_point 
      cursor.updateRow(row) 
      print "{} location updated".format(row[point_unique_id_or_name_index]) 
      update_count += 1 

print "{} point locations updated".format(update_count) 

Вам только нужно ссылаться на соответствующие поля в UpdateCursor - если они не получают ссылки внутри для цикла, не включайте их.

Настоятельно советуем вам практиковать копию оригинального набора данных.