2015-12-04 5 views
0

У меня есть данные пространственного отслеживания (lat, long) с отметками времени. Если время между двумя последовательными точками превышает 2 часа, я не могу хорошо проанализировать данные, поэтому хочу разбить набор данных на основе заданного пользователем порогового значения времени. Конечная цель - загрузить их в ArcGIS в виде шейп-файлов (точек). Многое расщепление состоит в том, чтобы расщепить равное количество строк или некоторый общий атрибут, но это будет указано пользователем и будет меняться в зависимости от набора данных. Я супер новичок в этом, поэтому у меня нет сценария, который не смехотворен, но я играю с идеей чтения новых данных, а затем создаю пустые списки, добавляя к ним до тех пор, пока время (deltaseconds) меньше определенной величины (скажем, 30 минут или 1800 секунд). Как только он достигнет этой суммы, сохраните это как список и создайте выходной файл, а затем, начиная со следующей точки, в новый список ... но могут быть способы сделать это, пока он все еще в CSV? Это образец данных в csv:Необходимо разбить CSV на меньшие таблицы, в зависимости от значения одного из моих столбцов (время)

Time     Lat  Lng  Time  deltaseconds 
9/12/2015 21:52 16.5033 -85.87527 0:00:00 0 
9/12/2015 21:52 16.5033 -85.87524 0:00:01 1 
9/12/2015 21:53 16.5033 -85.8752 0:00:55 55 

Любая помощь приветствуется! Спасибо!

+0

Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации. [Минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve) применим здесь. Мы не можем эффективно помочь вам, пока вы не опубликуете свой код и не сможете точно описать проблему. StackOverflow не является кодовым или учебным сервисом. Короче говоря, мы ожидаем, что вы сначала попытаетесь решить проблему. Вы начали анализ достаточно хорошо; теперь выберите атаку и начните кодирование. – Prune

+0

Вы уже узнали о модуле csv Python? Это может упростить работу с файлами csv. – Prune

+0

Да, я пытался и терпел неудачу. Вот код, который я до сих пор (или мой рабочий) импорт CSV импорт ОС импорт SYS е = разомкнут ('V: \\ finalproject \\ Data \\ rachel_honduras_Tracks.csv') csv_f = csv.reader (е) выходной_файл = "в: \\ finalproject \\ \\ Data \\ editeddata newoutputfile.csv" для строки в считывающем: new_list = [] чтения в новой строке new_list.append # Чтение в строках и сохранить добавление , если deltaseonds

ответ

0

Я понял, что вы хотите разбить существующие csv в нескольких шейп-файлах на основе диапазона времени, заданного в поле «deltaseconds». Сначала вручную измените имя поля «deltaseconds» на «deltasec», поскольку файл формы может принимать только длину поля до 10 символов. Теперь Ниже приведен скрипт, который вы можете запустить в arcpy:

import arcpy 
from arcpy import env 
def export_multiple_shps(workspace,file,t): 
# Define workspace 
    env.workspace=workspace 
# Convert CSV to Shapefile, assuming that x-field is 'Lng' & y-field is 'Lat' 
    MakeXYEventLayer_management(file, "Lng", "Lat", "tracking.shp") 
# Count no. of rows in tracking shapefile 
    arcpy.MakeTableView_management("tracking.shp","tableView") 
    row_count=int(arcpy.GetCount_management("tableView").getOutput(0)) 
    k=1 
    j=0 
# Loop to export shapefiles after every t sec increment in 'deltasec' 
    for i in range(t,row_count,t): 
     query1='\"deltasec\"<={}'.format(i) 
     query2='\"deltasec\"<={}'.format(j) 
     arcpy.SelectLayerByAttribute_management("tracking.shp","NEW_SELECTION",query1) 
     arcpy.SelectLayerByAttribute_management("tracking.shp","REMOVE_FROM_SELECTION",query2) 
     arcpy.CopyFeatures_management("tracking.shp","tracking"+str(k)+".shp") 
     j=i 
     k+=1 
# Executing function, by assuming csv is placed in "D:/data" with name "tracking.csv", & we want to export shapefile after every "1800 sec". You can change the inputs as per requirement 
export_multiple_shps(workspace="D:/data",file="tracking.csv",t=1800) 

Пожалуйста, дайте мне знать, если ваши требования являются чем-то еще.