Member 14891535 Ответов: 4

Трудное задание! ! ! !


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

• . Это будет достигнуто с помощью HTTP GET, выданного по следующему URL-адресу:
https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000[^ Формат данных описан в приложении А.

• Обработайте полученные данные и сохраните их в базе данных по вашему выбору. Это должно храниться с использованием индекса высокого разрешения, соответствующего типу данных. Вы должны хранить как метаданные о датчике/устройстве, так и записи в полезной нагрузке.

• Создайте пользовательский интерфейс, который может получить доступ к записям полезной нагрузки датчика/устройства, хранящимся в вашей базе данных, и визуализировать их как три трассировки временных рядов на одном графике.

• Для каждой из трех трасс вычислите максимальное значение, минимальное значение, стандартное отклонение и дисперсию по всей длине каждой серии. Отобразите четыре значения для каждой серии в вашем пользовательском интерфейсе.

• Предположив, что три трассировки измеряют значения пространственно ортогональных компонент вектора, добавьте в пользовательский интерфейс дополнительный график для отображения величины вектора.

• Предполагая, что три трассы синхронизированы и коррелированы, разработайте алгоритм подсчета количества пиков, которые возникают в значении величины вектора по всей длине ряда, и выведите это число в пользовательский интерфейс.

Что я уже пробовал:

import requests
import json

url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000"

response = requests.get(url)
data = response.text
parsed = json.loads(data)

print(json.dumps)
%print(json.dumps(parsed, indent=1))

Patrice T

А у вас есть вопрос ?

Member 14891535

Да, как я должен начать и продолжить?

Richard MacCutchan

Следуйте совету, который я дал вам вчера.

Richard MacCutchan

Одна из вещей, которую я обнаружил, глядя на исходные данные, заключается в том, что формат данных JSON неверен. После blobJson массив окружают двойные кавычки, которых там быть не должно. Кроме того, имена элементов окружены одинарными, а не двойными кавычками.

[редактировать]
Прочитав вышеизложенное еще раз, я вижу, что именно так представлены данные, поэтому вам предстоит исправить формат перед декодированием второй части. Но, как я уже говорил ранее, это выглядит довольно продвинутым проектом, поэтому, если вы не опытный программист, вы, вероятно, захотите найти что-то немного менее сложное.

Member 14891535

Вы имеете в виду (есть двойные кавычки, окружающие массив после blobJson,) в исходном наборе данных в URL-адресе? если да, то URL-адрес указан, я не могу его изменить.

Richard MacCutchan

Смотрите иные мои комментарии выше.

Member 14891535

Спасибо. Это нормально, я только новичок, и я пропущу эти шаги и перейду к настройке MySQL, которая является вторым шагом. Спасибо за Ваши советы.

Richard MacCutchan

См.также решение 5 ниже.

4 Ответов

Рейтинг:
2

Richard MacCutchan

Поскольку я наконец выяснил формат данных и как их декодировать я предлагаю следующее:

# decode the response from the REST service
restjson=json.loads(httpresponse)

# get the string of sensor data
rawblob=restjson[0]['blobJson']

# replace single quotes with double quotes
blobjson=rawblob.replace('\'','"')

# decode the array of sensor readings
sensordata=json.loads(blobjson)

print('List the first two entries of sensordata:')
for x in sensordata[:2]:
    print('\t', x)

print('\nList the individual items of the first entry:')
for k,v in sensordata[0].items():
    print('\t', k, ":", v)

Из этого вы должны быть в состоянии понять, что делать дальше.


Member 14891535

Спасибо. В чем смысл httpresponse? Наверное, так оно и есть:

url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000"

ответ = запросы.получить(URL-адрес)
данные = ответ.текст
parsed = json.loads(данные)

restjson=формат JSON.нагрузки(данные)

Richard MacCutchan

Это просто имя, которое я использовал для строки, возвращаемой из URL-адреса.

Member 14891535

Строковое имя, которое я ставлю, - это либо данные, либо URL, но все равно не может пройти через трассировку AttributeError (самый последний вызов last)
&ЛТ;оболочкой IPython-входное напряжение-36-ec02c085a96e> В &ЛТ;модуль&ГТ;()
9
10 # декодирование ответа от службы REST
---> 11 restjson=json.load(ответ)

Member 14891535

Я нашел ошибку. это restjson=формат JSON.нагрузок(сведения) и не restjson=формат JSON.загрузить
(данные)

Richard MacCutchan

Извините, это была моя ошибка при копировании из тестового кода.

Member 14891535

Это не твоя проблема. Спасибо за руководство. Я рад, что теперь могу следовать ему.

Рейтинг:
1

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.


Member 14891535

Да, я это вполне понимаю. Я в панике.

Я попробовал свои первые шаги:

запросы на импорт
импорт в формате JSON

url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000"

ответ = запросы.получить(URL-адрес)
данные = ответ.текст
parsed = json.loads(данные)

печати(в формате JSON.дампы)
%print(json.dumps(parsed, indent=1))


(Приведенный выше код я написал сам после поиска почти 3 дней)
Я понятия не имею, где я могу искать и делать вторые шаги.

OriginalGriff

Начните с ваших заметок по курсу: вы рассмотрели материал на последней лекции или на последних двух лекциях, домашнее задание всегда связано с недавним преподаванием - это его работа; чтобы убедиться, что вы обращали внимание и усиливали обучение, которое вам дали.

Поиск в интернете точного решения не сработает - вам нужно внимательно посмотреть на этот вопрос, перечитать свои заметки и начать думать!

Member 14891535

Я это понимаю. Это не связано с курсовым заданием. Это соревнование.
Мне пришлось разбить это на несколько вопросов, где я застрял.

https://www.codeproject.com/Questions/5274079/How-to-store-a-retrieved-data-in-a-database-of-my

Я не прошу полного решения.

OriginalGriff

"Это не связано с курсовым заданием. Это соревнование."
Это считается домашним заданием: это, возможно, хуже, чем обман вашей школы, потому что все остальные записи вложили в него свою тяжелую работу, а вы этого не сделали.

- Я не прошу полного решения."
Но вы также не пробовали ничего, кроме как попытаться найти сайт, который позволит вам "искать и делать вторые шаги".

Если вы еще не можете этого сделать, оставьте это до тех пор, пока не сможете: если вы еще не можете хранить данные в базе данных, то вы будете полностью потеряны с более поздними шагами - вы еще не узнали достаточно (или не приобрели достаточно опыта, чтобы быть комфортно с() сложными вещами.

Рейтинг:
0

Richard MacCutchan

Это тот же самый вопрос, что и Как получить только первые 2 данные из определенной конечной точки REST (нет всех данных) Питон[^], который вы опубликовали вчера. И я уже дал вам совет, как извлечь эти данные.

На самом деле это уже третий раз, когда вы задаете этот вопрос.


Member 14891535

да, я понимаю, на самом деле, я не мог решить ее, даже если бы попытался.

parsed = json.loads(данные)

print(json.dumps(parsed, indent=1))

Richard MacCutchan

нет смысла повторять одно и то же снова. Вчера я объяснил вам, что вам нужно загрузить данные JSON и изучить их, чтобы увидеть, как они преобразуются в объекты Python. Пока вы этого не сделаете, вы не добьетесь никакого прогресса.

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

Member 14891535

Ладно, спасибо. я думаю, что перейду к следующим шагам. Я действительно понимаю и читаю ссылку, которую вы предоставили. Спасибо.

Рейтинг:
0

KarstenK

Конечно, вы должны продолжать, но лучше всего понять, какой язык вы хотите использовать. Вам лучше спросить, какие библиотеки рекомендуются для этой задачи, чтобы у вас были соответствующие инструменты базы данных, сети и пользовательского интерфейса.

Но в любом случае - это ваша задача. Поэтому разделите его на небольшие куски, которые вы можете решить, и прочитайте задание назначения очень тщательно Недоразумения-один из источников ошибок. Найдите какую-нибудь полезную IDE. Здесь вы найдете Статья интегрированную среду разработки Python а для C++ лучше всего подходит Visual Studio.

Удачи


Member 14891535

Я буду редактировать свои вопросы.

Да, я это вполне понимаю. Я в панике.

Я попробовал свои первые шаги:

запросы на импорт
импорт в формате JSON

url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000"

ответ = запросы.получить(URL-адрес)
данные = ответ.текст
parsed = json.loads(данные)

печати(в формате JSON.дампы)
%print(json.dumps(parsed, indent=1))


(Приведенный выше код я написал сам после поиска почти 3 дней)
Я понятия не имею, где я могу искать и делать вторые шаги.