How to create ODM: Tests to Insert ODM

×

Warning message

You can't delete this newsletter because it has not been sent to all its subscribers.

od-test-GADM.py

import numpy as np
import io
import json
import requests
'''
Firenze     43.78755386935608, 11.253283529320194
Impruneta   43.68395500620326, 11.254224622517292
Calenzano   43.8648446568991, 11.167166955936286
Fiesole     43.806420216210135, 11.29326591697936
'''
x_orig = [11.254224622517292, 11.167166955936286, 11.29326591697936]
y_orig = [43.68395500620326, 43.8648446568991, 43.806420216210135]
x_dest = [11.253283529320194, 11.253283529320194, 11.253283529320194]
y_dest = [43.78755386935608, 43.78755386935608, 43.78755386935608]

# OD BUILD ########################################################################################################################## 

print("Compressed GADM")
buf = io.BytesIO()
np.savez_compressed(buf, 
    x_orig=x_orig, 
    y_orig=y_orig, 
    x_dest=x_dest, 
    y_dest=y_dest
)
buf.seek(0)
response = requests.post('https://www.snap4city.org/odmm-build/api/buildcommunes', data=buf, headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
dd_data = json.loads(response.text)
print(dd_data)

# OD INSERT ####################################################################################################################

print("Insert GADM")
od_name = "odTestV1"
organization = "ORG"
od_id = od_name + "_" + organization + "_communes"
model = 'ODMModel'
type = 'ODMModel'
contextbroker = '<CONTEXTBROKER>'
producer = '<PRODUCER>'
subnature = 'People_counter'

data_insert = {
    "od_id": od_id,
    "orig_communes": [item['orig_commune'] for item in dd_data], 
    "dest_communes": [item['dest_commune'] for item in dd_data], 
    "from_date": "2024-01-01 09:00:00",
    "to_date": "2024-01-01 09:59:59", 
    "values": [item['value'] for item in dd_data], 
    "value_type": "test", 
    "value_unit": "test",  
    "description": "test", 
    "organization": organization, 
    "kind": "test", 
    "mode": "test", 
    "transport": "test", 
    "purpose": "test",
    "colormap_name": "ODcolormap2",
    "representation": "GADM"
}

response = requests.post('https://www.snap4city.org/odmm-insert/api/insertcommunes?' + f"model={model}&type={type}&contextbroker={contextbroker}&organization={organization}&producer={producer}&subnature={subnature}", data=json.dumps(data_insert), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

# OD GET ######################################################################################################################

print("Get GADM")

data_get = {
    "organization": organization,
    "precision": 'communes',
    "from_date": "2024-01-01 09:00:00",
    "latitude": '43.78003311157232',
    "longitude": '11.245427467795562',
    "inflow": True
}

response = requests.get('https://www.snap4city.org/odmm/api/get?' + f"contextbroker={contextbroker}", params=data_get , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

print("Get Polygon GADM")

data_get_polygon = {
    "type": "",
    "latitude": '43.820144653320426',
    "longitude": '11.324463095569254',
    "organization": organization
}

response = requests.get('https://www.snap4city.org/odmm/api/polygon?' + f"contextbroker={contextbroker}", params=data_get_polygon , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

od-test-ISTAT.py

import numpy as np
import io
import json
import requests

orig_reg = ['9', '9', '9']
orig_prov = ['48', '48', '48']
orig_comm = ['48017', '48017', '48017']
dest_reg = ['9', '9', '9']
dest_prov = ['48', '48', '48']
dest_comm = ['48001', '48043', '48041']

# OD BUILD ########################################################################################################################## 

print("Compressed ISTAT")
buf = io.BytesIO()

np.savez_compressed(buf, 
    orig_region_id = orig_reg, 
    orig_province_id = orig_prov, 
    orig_municipality_id = orig_comm, 
    dest_region_id = dest_reg, 
    dest_province_id = dest_prov, 
    dest_municipality_id = dest_comm
)

buf.seek(0)
response = requests.post('https://www.snap4city.org/odmm-build/api/buildcommunes', data=buf, headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
dd_data = json.loads(response.text)
print(dd_data)

# OD INSERT ####################################################################################################################

print("Insert ISTAT")
od_name = "odTestV1"
organization = "ORG"
od_id = od_name + "_" + organization + "_municipality"
model = 'ODMModel'
type = 'ODMModel'
contextbroker = '<CONTEXTBROKER>'
producer = '<PRODUCER>'
subnature = 'People_counter'

values = [10, 43, 27]

data_insert = {
    "od_id": od_id,
    "orig_communes": [item['orig_commune'] for item in dd_data], 
    "dest_communes": [item['dest_commune'] for item in dd_data], 
    "from_date": "2024-01-01 09:00:00",
    "to_date": "2024-01-01 09:59:59", 
    "values": [v for v in values], 
    "value_type": "test", 
    "value_unit": "test",  
    "description": "test", 
    "organization": organization, 
    "kind": "test", 
    "mode": "test", 
    "transport": "test", 
    "purpose": "test",
    "source": "italy_epgs4326",
    "colormap_name": "ODcolormap2",
    "representation": "ISTAT"
}

response = requests.post('https://www.snap4city.org/odmm-insert/api/insertcommunes?' + f"model={model}&type={type}&contextbroker={contextbroker}&organization={organization}&producer={producer}&subnature={subnature}", data=json.dumps(data_insert), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

# OD GET ######################################################################################################################

print("Get ISTAT")

data_get = {
    "organization": organization,
    "precision": 'municipality',
    "from_date": "2024-01-01 09:00:00",
    "latitude": '43.84010186856372',
    "longitude": '11.230603113425609',
    "inflow": True,
    "od_id": od_id
}

response = requests.get('https://www.snap4city.org/odmm/api/get?' + f"contextbroker={contextbroker}", params=data_get , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

print("Get Polygon ISTAT")

data_get_polygon = {
    "type": "municipality",
    "latitude": '43.754170482042475',
    "longitude": '11.319338490217408',
    "organization": organization
}

response = requests.get('https://www.snap4city.org/odmm/api/polygon?' + f"contextbroker={contextbroker}", params=data_get_polygon , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

od-test-MGRS.py

import numpy as np
import io
import json
import requests

x_orig = [11.240716442245125, 11.271746328150613, 11.241751267083647]
y_orig = [43.778027114249724, 43.7668719117573, 43.760050269085774]
x_dest = [11.248737408508978, 11.248737408508978, 11.248737408508978]
y_dest = [43.79163071922525, 43.79163071922525, 43.79163071922525]
precision = 1000

IP = '192.168.1.235'
PORT_BUILD = '3000'
PORT_INSERT = '3100'

# OD BUILD ########################################################################################################################## 

print("Build Uncompressed")
data = {
    "x_orig": x_orig,
    "y_orig": y_orig, 
    "x_dest": x_dest, 
    "y_dest": y_dest,
    "precision": precision
}
response = requests.post('https://www.snap4city.org/odmm-build/api/build', data=json.dumps(data), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
dd_data = json.loads(response.text)
print(dd_data)

print("Build Compressed")
buf = io.BytesIO()
np.savez_compressed(buf, 
    x_orig=x_orig, 
    y_orig=y_orig, 
    x_dest=x_dest, 
    y_dest=y_dest,
    precision=precision
)
buf.seek(0)
response = requests.post('https://www.snap4city.org/odmm-build/api//buildcompressed', data=buf, headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
dd_data = json.loads(response.text)
print(dd_data)

# OD INSERT ####################################################################################################################

print("Insert MGRS")
od_name = "odTestV1"
organization = "ORG"
od_id = od_name + "_" + organization + "_" + str(precision)
model = 'ODMModel'
type = 'ODMModel'
contextbroker = '<CONTEXTBROKER>'
producer = '<PRODUCER>'
subnature = 'People_counter'

data_insert = {
    "od_id": od_id,
    "x_orig": [item['x_orig'] for item in dd_data], 
    "y_orig": [item['y_orig'] for item in dd_data], 
    "x_dest": [item['x_dest'] for item in dd_data], 
    "y_dest": [item['y_dest'] for item in dd_data], 
    "from_date": "2024-01-01 09:00:00",
    "to_date": "2024-01-01 09:59:59", 
    "precision": precision, 
    "values": [item['value'] for item in dd_data], 
    "value_type": "test", 
    "value_unit": "test",  
    "description": "test", 
    "organization": organization, 
    "kind": "test", 
    "mode": "test", 
    "transport": "test", 
    "purpose": "test",
    "colormap_name": "ODcolormap2",
    "representation": "MGRS"
}

response = requests.post('https://www.snap4city.org/odmm-insert/api/insert?'+ f"model={model}&type={type}&contextbroker={contextbroker}&organization={organization}&producer={producer}&subnature={subnature}", data=json.dumps(data_insert), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

# OD GET ######################################################################################################################

print("Get MGRS")

data_get = {
    "organization": organization,
    "precision": precision,
    "from_date": "2024-01-01 09:00:00",
    "latitude": '43.79454239413843',
    "longitude": '11.243597328280597',
    "inflow": True,
    "od_id": od_id
    }

response = requests.get('https://www.snap4city.org/odmm/api/get_mgrs?' + f"contextbroker={contextbroker}", params=data_get , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

print("Get Polygon MGRS")

data_get_polygon = {
    "precision": precision,
    "latitude": '43.7586',
    "longitude": '11.2423',
}

response = requests.get('https://www.snap4city.org/odmm/api/mgrs_polygon?' + f"contextbroker={contextbroker}", params=data_get_polygon , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

od-test-CUSTOM.py

import numpy as np
import io
import json
import requests

points = [(43.83393771026881, 11.200537007559367, 1000),(43.77090221578128, 11.297571901733663, 10),(43.75460355642767, 11.194275728179242, 100)]
areas = [
    {"coordinates":[[[11.19562601057774,43.80097461512503],[11.187456997424704,43.79753337553075],[11.191799679167787,43.79319313533719],[11.204038016445736,43.79102294737737],[11.204463030312638,43.79681003368833],[11.19984731219975,43.802574675496544],[11.19562601057774,43.80097461512503]]],"type":"Polygon"},
    {"coordinates":[[[11.505422556553697,43.77157098196125],[11.504939301960206,43.77213721604477],[11.50424633310729,43.77208454333302],[11.503507774199392,43.77159073440336],[11.503617190333301,43.771024495145355],[11.504155152995907,43.77003685570361],[11.505167252240767,43.769398173514105],[11.506512255404175,43.769593054980646],[11.506740205684707,43.76988935072427],[11.506603435516922,43.77079139761827],[11.506038118820527,43.771522243153925],[11.505422556553697,43.77157098196125]]],"type":"Polygon"},
    {"coordinates":[[[11.3220618965359,43.72655842704762],[11.323494696127767,43.72638058951935],[11.322953294754853,43.72723420484036],[11.3220618965359,43.72655842704762]]],"type":"Polygon"}
]

orig_poi = ['TEST-0', 'TEST-1', 'TEST-2']
dest_poi = ['TEST-3', 'TEST-4', 'TEST-5']

# OD INSERT CUSTOM AREAS ########################################################################################################################## 

print("Insert CUSTOM circular area")

for index, point in enumerate(points):
    data = {"poi_id":orig_poi[index],"name":"Test poi "+orig_poi[index],"latitude":point[0],"longitude":point[1],"radius":point[2]}
    response = requests.post('https://www.snap4city.org/odmm-insert/api/insertcirculararea', data=json.dumps(data), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
    print(response)
    print(response.text)

print("Insert CUSTOM area")

for index, area in enumerate(areas):
    data = {"poi_id":dest_poi[index],"name":"Test poi "+dest_poi[index],"custom_area":json.dumps(area)}
    response = requests.post('https://www.snap4city.org/odmm-insert/api/insertcustomarea', data=json.dumps(data), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
    print(response)
    print(response.text)

# OD BUILD ########################################################################################################################## 

print("Compressed CUSTOM")
buf = io.BytesIO()

np.savez_compressed(buf,
    orig_poi_id = orig_poi,
    dest_poi_id = dest_poi
)

buf.seek(0)
response = requests.post('https://www.snap4city.org/odmm-build/api/buildcommunes', data=buf, headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
dd_data = json.loads(response.text)
print(dd_data)

# OD INSERT ####################################################################################################################

print("Insert CUSTOM")
od_name = "odTestCUSTOM"
organization = "Organization"
od_id = od_name + "_" + organization + "_poi"
model = 'ODMModel'
type = 'ODMModel'
contextbroker = 'orion-1'
producer = 'DISIT'
subnature = 'People_counter'

values = [10, 43, 27]

data_insert = {
    "od_id": od_id,
    "orig_communes": [item['orig_commune'] for item in dd_data], 
    "dest_communes": [item['dest_commune'] for item in dd_data], 
    "from_date": "2024-01-01 09:00:00",
    "to_date": "2024-01-01 09:59:59", 
    "values": [v for v in values], 
    "value_type": "test", 
    "value_unit": "test",  
    "description": "test", 
    "organization": organization, 
    "kind": "test", 
    "mode": "test", 
    "transport": "test", 
    "purpose": "test",
    "source": "italy_epgs4326",
    "colormap_name": "ODcolormap2",
    "representation": "ISTAT"
}

response = requests.post('https://www.snap4city.org/odmm-insert/api/insertcommunes?' + f"model={model}&type={type}&contextbroker={contextbroker}&organization={organization}&producer={producer}&subnature={subnature}", data=json.dumps(data_insert), headers={'Content-Type': 'application/json', 'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

# OD GET ######################################################################################################################

print("Get CUSTOM")

data_get = {
    "organization": organization,
    "precision": 'poi',
    "from_date": "2024-01-01 09:00:00",
    "latitude": '43.770685287114325',
    "longitude": '11.505131977576191',
    "inflow": True,
    "od_id": od_id
}

response = requests.get('https://www.snap4city.org/odmm/api/get?' + f"contextbroker={contextbroker}", params=data_get , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

print("Get Polygon ISTAT")

data_get_polygon = {
    "type": "poi",
    "latitude": '43.726692388164714',
    "longitude": '11.322730102001147',
    "organization": organization
}

response = requests.get('https://www.snap4city.org/odmm/api/polygon?' + f"contextbroker={contextbroker}", params=data_get_polygon , headers={'Authorization': 'Bearer <ACCESS_TOKEN>'})
print(response)
print(response.text)

ODM_ingestion_NodeRED_example.json

to be loaded on node-red

[{"id":"3614f27671e9d56f","type":"tab","label":"ODM Ingest Examples","disabled":false,"info":"","env":[]},{"id":"e93e6cc5c3a49edf","type":"zip","z":"3614f27671e9d56f","name":"","mode":"compress","filename":"","outasstring":false,"x":120,"y":1080,"wires":[["733a42f34d72928e"]]},{"id":"159066c34bf4fa97","type":"function","z":"3614f27671e9d56f","name":"CREATE OD FLOWS","func":"day = msg.payload;\n\ncomm_list = [\n    ['Firenze', '48017'],\n    ['Sesto Fiorentino', '48043'],\n    ['Scandicci', '48041'],\n    ['Fiesole', '48015'],\n    ['Bagno a Ripoli', '48001'],\n    ['Calenzano', '48005'],\n    ['Campi Bisenzio', '48006'],\n    ['Impruneta', '48022'],\n    ['Vaglia','48046'],\n    ['Ponteassieve', '48033'],\n    ['Greve in Chianti', '48021'],\n    ['San Casciano in Val di Pesa', '48038'],\n    ['Lastra a Signa', '48024'],\n    ['Signa', '48044'],\n    ['Montespertoli','48030'],\n    ['Montelupo Fiorentino','48028'],\n    ['Empoli','48014']\n];\n\norig_reg = [];\ndest_reg = [];\norig_prov = [];\ndest_prov = [];\nvalues = [];\norig_comm = [];\ndest_comm = [];\n\nfor(let idx_o=0; idx_o < comm_list.length; idx_o++){ \n    for(let idx_d=0; idx_d < comm_list.length; idx_d++){ \n        if (idx_d != idx_o){\n            orig_comm.push(comm_list[idx_o][1]);\n            dest_comm.push(comm_list[idx_d][1]);\n            orig_reg.push('9'); // Toscana\n            dest_reg.push('9');\n            orig_prov.push('48'); // Prof. di Firenze\n            dest_prov.push('48');\n            values.push(Math.round(Math.random() * (500 - 100) + 100));\n        }\n    }\n}\n            \nvar orig_buf_reg = Buffer.from(orig_reg);\nvar dest_buf_reg = Buffer.from(dest_reg);\nvar orig_buf_prov = Buffer.from(orig_prov);\nvar dest_buf_prov = Buffer.from(dest_prov);\nvar orig_buf_comm = Buffer.from(orig_comm);\nvar dest_buf_comm = Buffer.from(dest_comm);\nbuf = [\n    {\n        filename: \"orig_region_id\",\n        payload: JSON.stringify(orig_reg)\n    },\n    {\n        filename: \"dest_region_id\",\n        payload: JSON.stringify(dest_reg)\n    },\n    {\n        filename: \"orig_province_id\",\n        payload: JSON.stringify(orig_prov)\n    },\n    {\n        filename: \"dest_province_id\",\n        payload: JSON.stringify(dest_prov)\n    },\n    {\n        filename: \"orig_municipality_id\",\n        payload: JSON.stringify(orig_comm)\n    },\n    {\n        filename: \"dest_municipality_id\",\n        payload: JSON.stringify(dest_comm)\n    }\n];\n\nmsg.payload = buf;\n\n\nvalues = {\n    topic: \"values\",\n    payload: {\n        orig_reg: orig_reg,\n        dest_reg: dest_reg,\n        orig_prov: orig_prov,\n        dest_prov: dest_prov,\n        orig_comm: orig_comm,\n        dest_comm: dest_comm,\n        values: values,\n        dates: day\n    }\n};\n\nreturn [values, msg]","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":980,"wires":[["139e968bcd79db75","4f72980b07686b9b"],["e93e6cc5c3a49edf"]],"outputLabels":["values","msg"]},{"id":"733a42f34d72928e","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/buildcommunes';\n\nmsg = {\n    url: baseUrl + '/odmm-build/api/buildcommunes',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":1080,"wires":[["d32ecbf472a77254","e8329bb47a2a7548"]]},{"id":"d32ecbf472a77254","type":"http request","z":"3614f27671e9d56f","name":"od-build","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","x":580,"y":1080,"wires":[["94b2ec505eef4e92"]]},{"id":"e8329bb47a2a7548","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":430,"y":1100,"wires":[]},{"id":"94b2ec505eef4e92","type":"function","z":"3614f27671e9d56f","name":"","func":"msg.topic = \"id_data\";\nmsg.complete = 1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":1180,"wires":[["6f609c04c0e0587f","4f72980b07686b9b"]]},{"id":"6f609c04c0e0587f","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":250,"y":1200,"wires":[]},{"id":"4f72980b07686b9b","type":"join","z":"3614f27671e9d56f","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":390,"y":1180,"wires":[["676664c69565a5bf","6065c694180c9240"]]},{"id":"676664c69565a5bf","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":570,"y":1180,"wires":[]},{"id":"6065c694180c9240","type":"function","z":"3614f27671e9d56f","name":"DEFINE INSERT JSON","func":"id_data = msg.payload.id_data;\n\nvisite = msg.payload.values.values;\n\ndates = msg.payload.values.dates;\n\norig_communes = [];\ndest_communes = [];\nvalues = [];\n\n\nfor(let i=0; i<id_data.length; i++){\n    orig_communes.push(id_data[i].orig_commune);\n    dest_communes.push(id_data[i].dest_commune);\n    values.push(visite[i].toString());\n}\n\nod_name = \"odNodeRed2\";\norganization = \"ORG\";\n\nod = {\n    'od_id': od_name + '_' + organization + \"_municipality\",\n    'from_date': dates.split('T')[0] + \" 00:00:00\",\n    'to_date':   dates.split('T')[0] + \" 23:59:59\",\n    'organization': organization,\n    'value_type': 'visitor',\n    'value_unit': 'unit',\n    'description': 'OD test flows',\n    'kind': '',\n    'mode': '',\n    'transport': '',\n    'purpose': '',\n    'orig_communes': orig_communes,\n    'dest_communes': dest_communes,\n    'values': values,\n    'source': 'italy_epgs4326',\n    'colormap_name': 'ODcolormap2',\n    'representation': 'ISTAT'\n}\n\nmsg.payload = od;\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":1340,"wires":[["442a5cc4d4569e52","a6871642d5ae50e6"]]},{"id":"442a5cc4d4569e52","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":370,"y":1360,"wires":[]},{"id":"a6871642d5ae50e6","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\nmodel = 'ODMModel'\ntype = 'ODMModel'\ncontextbroker = '<CONTEXTBROKER>'\nproducer = '<PRODUCER>'\nsubnature = 'People_counter'\norganization = 'ORG'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + `/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`\n\nmsg = {\n    url: baseUrl +`/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`,\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":1340,"wires":[["747f9121a48ec81b","d008f299c6f15783"]]},{"id":"747f9121a48ec81b","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":1360,"wires":[]},{"id":"d008f299c6f15783","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","x":880,"y":1340,"wires":[["45ac7aee45bb3e12"]]},{"id":"45ac7aee45bb3e12","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1030,"y":1340,"wires":[]},{"id":"b39d24788cdb7b17","type":"function","z":"3614f27671e9d56f","name":"DATES","func":"flow.set('access_token', msg.payload)\n\ndays = [\n    new Date('2022-07-01').toISOString(),\n    new Date('2022-07-02').toISOString(),\n    new Date('2022-07-03').toISOString(),\n    new Date('2022-07-04').toISOString(),\n    new Date('2022-07-05').toISOString(),\n    new Date('2022-07-06').toISOString(),\n    new Date('2022-07-07').toISOString()\n];\n\nmsg.payload = days;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":860,"wires":[["25bd41cc688c50cd"]]},{"id":"6c7e2093eb640841","type":"inject","z":"3614f27671e9d56f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":760,"wires":[["3e358b08ae9adc6e"]]},{"id":"25bd41cc688c50cd","type":"split","z":"3614f27671e9d56f","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":250,"y":860,"wires":[["365ac0b58746c04a","20f5a25002448215"]]},{"id":"365ac0b58746c04a","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":570,"y":860,"wires":[]},{"id":"20f5a25002448215","type":"delay","z":"3614f27671e9d56f","name":"","pauseType":"rate","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"15","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":400,"y":880,"wires":[["159066c34bf4fa97"]]},{"id":"139e968bcd79db75","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":980,"wires":[]},{"id":"c0fa59a9dcceb780","type":"comment","z":"3614f27671e9d56f","name":"Administrative area example (ISTAT areas)","info":"","x":220,"y":720,"wires":[]},{"id":"24abc9f9b95e5b1c","type":"comment","z":"3614f27671e9d56f","name":"MGRS area example","info":"","x":160,"y":40,"wires":[]},{"id":"4ea40e3ce7d483c2","type":"comment","z":"3614f27671e9d56f","name":"Define datetimes and create a message flow for each single date","info":"","x":290,"y":820,"wires":[]},{"id":"919b860ce965d69b","type":"comment","z":"3614f27671e9d56f","name":"Create some fake OD flows for each date, with origin, destination, and values","info":"","x":330,"y":940,"wires":[]},{"id":"fafb43a879943a7d","type":"comment","z":"3614f27671e9d56f","name":"Compress the origin-destination data and call OD-BUILD API","info":"","x":280,"y":1040,"wires":[]},{"id":"e269ae0f1b4f7dd7","type":"comment","z":"3614f27671e9d56f","name":"Get the OD-BUILD output (UIDs) and join them the the flow values and dates generated above","info":"","x":380,"y":1140,"wires":[]},{"id":"8ab41c341bdc6949","type":"comment","z":"3614f27671e9d56f","name":"Prepare the ODM data to be passed to the OD-INSERT API","info":"","x":270,"y":1260,"wires":[]},{"id":"c7328c425fa4f701","type":"comment","z":"3614f27671e9d56f","name":"Set ODM name in this node!","info":"","x":180,"y":1300,"wires":[]},{"id":"c3ab72992aba0be6","type":"function","z":"3614f27671e9d56f","name":"GENERATE DATA","func":"flow.set('access_token', msg.payload)\n\nx_orig=[11.2640829,11.1924514,11.11343098,11.21610639,11.2412952,11.30392193,11.26255335,11.33339615,11.24379216,11.14981118,11.22271159,11.16207604,11.14192935,11.23695808,11.27145473,11.19638757,11.20383978,11.17884029,11.34372387,11.26816873,11.28317737,11.33806597,11.3371628,11.17460982,11.19185493,11.20638211,11.21774432,11.28648188,11.33755865,11.16403878,11.31792941,11.31976439,11.18544804,11.30373068,11.27722594,11.30281641,11.33237886,11.10725959,11.20441032,11.32282792,11.26013083,11.24647157,11.28443074,11.14717564,11.18825021,11.10758475,11.31927365,11.13654279,11.18758365,11.12625946,11.17483075,11.18770444,11.22924104,11.22233095,11.1462357,11.29426152,11.18468175,11.27926524,11.30581191,11.31445826,11.29204809,11.26674457,11.30236986,11.21982444,11.10603883,11.23551573,11.25077462,11.28226369,11.31550015,11.19763249,11.11659137,11.2775602,11.10385321,11.26323457,11.25113861,11.34713785,11.17239977,11.16206407,11.23605897,11.32906099,11.30596364,11.15642195,11.22608085,11.23955172,11.18616217,11.1758608,11.24715632,11.34277858,11.29640599,11.26933728,11.19461153,11.14998946,11.20129697,11.23973977,11.18602517,11.30666835,11.13780744,11.23570417,11.13281437,11.17429181];\ny_orig=[43.81568508,43.80846725,43.78986322,43.79583956,43.83906722,43.78047389,43.72138986,43.78452704,43.78204016,43.7261822,43.80550199,43.84767994,43.77351306,43.74972923,43.83568357,43.83568209,43.7816379,43.76715053,43.8083528,43.73960626,43.79064054,43.7375484,43.80773715,43.81242346,43.81874277,43.77377622,43.73196668,43.73564434,43.83925763,43.84395916,43.811639,43.74510997,43.79301539,43.73388199,43.7669137,43.79977903,43.7824833,43.72564214,43.81132627,43.78758757,43.72423077,43.76008511,43.82216682,43.80150177,43.78016149,43.7620676,43.80121224,43.80336505,43.82217435,43.81973141,43.76294297,43.77382499,43.79909003,43.75211976,43.7565921,43.74417799,43.78384058,43.77622376,43.7451274,43.83624294,43.82693227,43.78416297,43.73891626,43.79479949,43.82748059,43.82177298,43.77496593,43.80221831,43.843288,43.78906141,43.83208879,43.74290649,43.7438019,43.72297332,43.73154941,43.74197388,43.79215552,43.81836768,43.79896844,43.7738506,43.78111006,43.84736087,43.735235,43.73005672,43.84341145,43.8415354,43.84216073,43.80405824,43.80043666,43.78248935,43.78980855,43.81415502,43.78436683,43.81361378,43.83072028,43.76099267,43.80208948,43.77547032,43.83788131,43.72058359];\nx_dest=[11.33447354,11.20667105,11.23157161,11.12476884,11.24230608,11.23328305,11.19415765,11.10012486,11.32176575,11.24269618,11.22228722,11.2776691,11.24555024,11.32975331,11.28552802,11.16511273,11.16917686,11.1335832,11.25384925,11.22903961,11.33582903,11.27135504,11.11617402,11.16666435,11.16910883,11.2728049,11.13859896,11.19055052,11.2100278,11.14753298,11.24149434,11.23462252,11.15248996,11.27575969,11.19547734,11.29360505,11.26843513,11.32197947,11.20500641,11.19553419,11.23365989,11.11477651,11.1631519,11.25901024,11.34840187,11.17004223,11.2044556,11.11654208,11.21492234,11.25341412,11.15972883,11.10009662,11.14793858,11.20605937,11.3281955,11.27391831,11.15424207,11.33273058,11.34958029,11.18265978,11.12928671,11.34025467,11.22799303,11.23505665,11.26635342,11.20760505,11.24811022,11.27664908,11.26544358,11.10419043,11.2236036,11.14646863,11.10977213,11.20498221,11.15375626,11.22028604,11.16837283,11.1465871,11.33807414,11.23817501,11.1598883,11.19415877,11.17203251,11.13937027,11.20385904,11.11327061,11.32692772,11.25380921,11.24555982,11.10708597,11.28612396,11.22532423,11.29481897,11.11864489,11.17146291,11.29963379,11.32516293,11.14639304,11.31400269,11.16723425];\ny_dest=[43.80610253,43.8099188,43.79561304,43.80353307,43.84672057,43.75419669,43.80320059,43.79236989,43.78452727,43.84189222,43.75133855,43.75239811,43.76888544,43.83538609,43.8442292,43.72946557,43.81405584,43.72972668,43.75770526,43.77261337,43.79836801,43.73422469,43.8100368,43.73322137,43.84590467,43.74196113,43.75741291,43.74719561,43.79698997,43.82902954,43.77797875,43.80182147,43.75054918,43.7750962,43.76057179,43.84959292,43.79989723,43.74385897,43.80764634,43.75698546,43.7590631,43.7335316,43.75794654,43.76110834,43.82463072,43.79626012,43.83312431,43.81436578,43.81491633,43.81302788,43.79741775,43.81757838,43.80592152,43.79813635,43.84471445,43.78431906,43.74352471,43.74176915,43.76090411,43.72303929,43.79385865,43.74394559,43.83702417,43.72382488,43.82566543,43.79717768,43.84365651,43.79504564,43.72836313,43.83331486,43.7408681,43.75289363,43.78983966,43.72100022,43.79163855,43.82043922,43.75235486,43.74342359,43.83597538,43.82955932,43.75233314,43.72188913,43.84488919,43.80265374,43.76201542,43.73029672,43.73426877,43.74121388,43.79027765,43.73595014,43.82334823,43.74811799,43.83518128,43.7291067,43.84955409,43.84859856,43.74883845,43.7546137,43.75043504,43.76635594];\n\ndata = {\n    \"precision\": 10000,\n    \"x_orig\": x_orig,\n    \"y_orig\": y_orig,\n    \"x_dest\": x_dest,\n    \"y_dest\": y_dest\n};\n\nmsg.payload = data; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":150,"y":160,"wires":[["d654ab06f2fd8990","b686a4f4b6ea6a88"]]},{"id":"ba289d520be4701b","type":"inject","z":"3614f27671e9d56f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":80,"wires":[["da865fdaf8eb12a5"]]},{"id":"d654ab06f2fd8990","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/build';\n\nmsg = {\n    url: baseUrl + '/odmm-build/api/build',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":160,"wires":[["9f467d4ed0e8e22d"]]},{"id":"9f467d4ed0e8e22d","type":"http request","z":"3614f27671e9d56f","name":"od-build","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":660,"y":160,"wires":[["e47cbdbef0dc21ed","e3da5182007842c0"]]},{"id":"e47cbdbef0dc21ed","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":160,"wires":[]},{"id":"e3da5182007842c0","type":"function","z":"3614f27671e9d56f","name":"SETUP INSERT","func":"x_orig = []\ny_orig = []\nx_dest = []\ny_dest = []\nvalues = []\n\nfor(let i in msg.payload){\n    x_orig.push(msg.payload[i][\"x_orig\"]);\n    y_orig.push(msg.payload[i][\"y_orig\"]);\n    x_dest.push(msg.payload[i][\"x_dest\"]);\n    y_dest.push(msg.payload[i][\"y_dest\"]);\n    values.push(msg.payload[i][\"value\"]);\n}\n\nvar organization = \"ORG\";\nod_name = \"odNodeRed\";\n\nod = {\n    'od_id': od_name + '_' + organization + \"_10000\",\n    'from_date': \"2024-01-01 09:00:00\",\n    'to_date':   \"2024-01-01 09:59:59\",\n    'organization': organization,\n    'precision': 10000,\n    'value_type': 'vehicles',\n    'value_unit': 'unit',\n    'description': 'OD test flow',\n    'kind': 'Test',\n    'mode': 'Test',\n    'transport': 'vehicles',\n    'purpose': 'Test',\n    'x_orig': x_orig,\n    'y_orig': y_orig,\n    'x_dest': x_dest,\n    'y_dest': y_dest,\n    'values': values,\n    'colormap_name': 'ODcolormap2',\n    'representation': 'MGRS'\n}\n\nmsg.payload = od;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":260,"wires":[["8f3bcf4f255df5f8","be576d46580c0b0e"]]},{"id":"be576d46580c0b0e","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\nmodel = 'ODMModel'\ntype = 'ODMModel'\ncontextbroker = '<CONTEXTBROKER>'\nproducer = '<PRODUCER>'\nsubnature = 'People_counter'\norganization = 'ORG'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + `/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`\n\nmsg = {\n    url: baseUrl +`/odmm-insert/api/insert?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`,\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":260,"wires":[["e24f87efe769a1c5"]]},{"id":"e24f87efe769a1c5","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":660,"y":260,"wires":[["988d65491d1f76dd"]]},{"id":"b686a4f4b6ea6a88","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":180,"wires":[]},{"id":"7363349161dfa6fd","type":"comment","z":"3614f27671e9d56f","name":"Generate origin and destination and call OD-BUILD","info":"","x":250,"y":120,"wires":[]},{"id":"39805dd8a26f1e3d","type":"comment","z":"3614f27671e9d56f","name":"Get MGRS cell and OD values and setup OD-INSERT request","info":"","x":280,"y":220,"wires":[]},{"id":"8f3bcf4f255df5f8","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":280,"wires":[]},{"id":"988d65491d1f76dd","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":260,"wires":[]},{"id":"da865fdaf8eb12a5","type":"get-access-token","z":"3614f27671e9d56f","name":"","x":350,"y":80,"wires":[["c3ab72992aba0be6"]]},{"id":"3e358b08ae9adc6e","type":"get-access-token","z":"3614f27671e9d56f","name":"","x":310,"y":760,"wires":[["b39d24788cdb7b17"]]},{"id":"c240fe02777bde85","type":"comment","z":"3614f27671e9d56f","name":"BEFORE STARTING A FLOW","info":"The flow as it is not works properly, needs to be configured:\n\nREQUEST block: configure baseUrl, contextbroker, producer and organization\nSETUP INSERT: configure organization\nDEFINE INSERT JSON: configure organization","x":700,"y":60,"wires":[]},{"id":"d658cf0ad3bcd885","type":"comment","z":"3614f27671e9d56f","name":"Compressed MGRS area example","info":"","x":200,"y":360,"wires":[]},{"id":"246a31b3b50ea756","type":"function","z":"3614f27671e9d56f","name":"GENERATE DATA","func":"flow.set('access_token', msg.payload)\n\nx_orig=[11.2640829,11.1924514,11.11343098,11.21610639,11.2412952,11.30392193,11.26255335,11.33339615,11.24379216,11.14981118,11.22271159,11.16207604,11.14192935,11.23695808,11.27145473,11.19638757,11.20383978,11.17884029,11.34372387,11.26816873,11.28317737,11.33806597,11.3371628,11.17460982,11.19185493,11.20638211,11.21774432,11.28648188,11.33755865,11.16403878,11.31792941,11.31976439,11.18544804,11.30373068,11.27722594,11.30281641,11.33237886,11.10725959,11.20441032,11.32282792,11.26013083,11.24647157,11.28443074,11.14717564,11.18825021,11.10758475,11.31927365,11.13654279,11.18758365,11.12625946,11.17483075,11.18770444,11.22924104,11.22233095,11.1462357,11.29426152,11.18468175,11.27926524,11.30581191,11.31445826,11.29204809,11.26674457,11.30236986,11.21982444,11.10603883,11.23551573,11.25077462,11.28226369,11.31550015,11.19763249,11.11659137,11.2775602,11.10385321,11.26323457,11.25113861,11.34713785,11.17239977,11.16206407,11.23605897,11.32906099,11.30596364,11.15642195,11.22608085,11.23955172,11.18616217,11.1758608,11.24715632,11.34277858,11.29640599,11.26933728,11.19461153,11.14998946,11.20129697,11.23973977,11.18602517,11.30666835,11.13780744,11.23570417,11.13281437,11.17429181];\ny_orig=[43.81568508,43.80846725,43.78986322,43.79583956,43.83906722,43.78047389,43.72138986,43.78452704,43.78204016,43.7261822,43.80550199,43.84767994,43.77351306,43.74972923,43.83568357,43.83568209,43.7816379,43.76715053,43.8083528,43.73960626,43.79064054,43.7375484,43.80773715,43.81242346,43.81874277,43.77377622,43.73196668,43.73564434,43.83925763,43.84395916,43.811639,43.74510997,43.79301539,43.73388199,43.7669137,43.79977903,43.7824833,43.72564214,43.81132627,43.78758757,43.72423077,43.76008511,43.82216682,43.80150177,43.78016149,43.7620676,43.80121224,43.80336505,43.82217435,43.81973141,43.76294297,43.77382499,43.79909003,43.75211976,43.7565921,43.74417799,43.78384058,43.77622376,43.7451274,43.83624294,43.82693227,43.78416297,43.73891626,43.79479949,43.82748059,43.82177298,43.77496593,43.80221831,43.843288,43.78906141,43.83208879,43.74290649,43.7438019,43.72297332,43.73154941,43.74197388,43.79215552,43.81836768,43.79896844,43.7738506,43.78111006,43.84736087,43.735235,43.73005672,43.84341145,43.8415354,43.84216073,43.80405824,43.80043666,43.78248935,43.78980855,43.81415502,43.78436683,43.81361378,43.83072028,43.76099267,43.80208948,43.77547032,43.83788131,43.72058359];\nx_dest=[11.33447354,11.20667105,11.23157161,11.12476884,11.24230608,11.23328305,11.19415765,11.10012486,11.32176575,11.24269618,11.22228722,11.2776691,11.24555024,11.32975331,11.28552802,11.16511273,11.16917686,11.1335832,11.25384925,11.22903961,11.33582903,11.27135504,11.11617402,11.16666435,11.16910883,11.2728049,11.13859896,11.19055052,11.2100278,11.14753298,11.24149434,11.23462252,11.15248996,11.27575969,11.19547734,11.29360505,11.26843513,11.32197947,11.20500641,11.19553419,11.23365989,11.11477651,11.1631519,11.25901024,11.34840187,11.17004223,11.2044556,11.11654208,11.21492234,11.25341412,11.15972883,11.10009662,11.14793858,11.20605937,11.3281955,11.27391831,11.15424207,11.33273058,11.34958029,11.18265978,11.12928671,11.34025467,11.22799303,11.23505665,11.26635342,11.20760505,11.24811022,11.27664908,11.26544358,11.10419043,11.2236036,11.14646863,11.10977213,11.20498221,11.15375626,11.22028604,11.16837283,11.1465871,11.33807414,11.23817501,11.1598883,11.19415877,11.17203251,11.13937027,11.20385904,11.11327061,11.32692772,11.25380921,11.24555982,11.10708597,11.28612396,11.22532423,11.29481897,11.11864489,11.17146291,11.29963379,11.32516293,11.14639304,11.31400269,11.16723425];\ny_dest=[43.80610253,43.8099188,43.79561304,43.80353307,43.84672057,43.75419669,43.80320059,43.79236989,43.78452727,43.84189222,43.75133855,43.75239811,43.76888544,43.83538609,43.8442292,43.72946557,43.81405584,43.72972668,43.75770526,43.77261337,43.79836801,43.73422469,43.8100368,43.73322137,43.84590467,43.74196113,43.75741291,43.74719561,43.79698997,43.82902954,43.77797875,43.80182147,43.75054918,43.7750962,43.76057179,43.84959292,43.79989723,43.74385897,43.80764634,43.75698546,43.7590631,43.7335316,43.75794654,43.76110834,43.82463072,43.79626012,43.83312431,43.81436578,43.81491633,43.81302788,43.79741775,43.81757838,43.80592152,43.79813635,43.84471445,43.78431906,43.74352471,43.74176915,43.76090411,43.72303929,43.79385865,43.74394559,43.83702417,43.72382488,43.82566543,43.79717768,43.84365651,43.79504564,43.72836313,43.83331486,43.7408681,43.75289363,43.78983966,43.72100022,43.79163855,43.82043922,43.75235486,43.74342359,43.83597538,43.82955932,43.75233314,43.72188913,43.84488919,43.80265374,43.76201542,43.73029672,43.73426877,43.74121388,43.79027765,43.73595014,43.82334823,43.74811799,43.83518128,43.7291067,43.84955409,43.84859856,43.74883845,43.7546137,43.75043504,43.76635594];\nprecision = 10000\n\nbuf = [\n    {\n        filename: \"x_orig\",\n        payload: JSON.stringify(x_orig)\n    },\n    {\n        filename: \"y_orig\",\n        payload: JSON.stringify(y_orig)\n    },\n    {\n        filename: \"x_dest\",\n        payload: JSON.stringify(x_dest)\n    },\n    {\n        filename: \"y_dest\",\n        payload: JSON.stringify(y_dest)\n    },\n    {\n        filename: \"precision\",\n        payload: JSON.stringify(precision)\n    }\n];\nmsg.payload = buf;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":150,"y":480,"wires":[["d898c06c5c37708c","15c594e1973b7a7c"]]},{"id":"0130f9bcee8360b1","type":"inject","z":"3614f27671e9d56f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":400,"wires":[["d76685a86bc16f37"]]},{"id":"d2ee0be851ad0234","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/build';\n\nmsg = {\n    url: baseUrl + '/odmm-build/api/buildcommunes',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":480,"wires":[["3387d0de6944793e"]]},{"id":"3387d0de6944793e","type":"http request","z":"3614f27671e9d56f","name":"od-build","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":680,"y":480,"wires":[["4d6f3e2d9ff3a2e4","c03fb56c0f22ce32"]]},{"id":"4d6f3e2d9ff3a2e4","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":480,"wires":[]},{"id":"c03fb56c0f22ce32","type":"function","z":"3614f27671e9d56f","name":"SETUP INSERT","func":"x_orig = []\ny_orig = []\nx_dest = []\ny_dest = []\nvalues = []\n\nfor(let i in msg.payload){\n    x_orig.push(msg.payload[i][\"x_orig\"]);\n    y_orig.push(msg.payload[i][\"y_orig\"]);\n    x_dest.push(msg.payload[i][\"x_dest\"]);\n    y_dest.push(msg.payload[i][\"y_dest\"]);\n    values.push(msg.payload[i][\"value\"]);\n}\n\nvar organization = \"ORG\";\nod_name = \"odNodeRed1\";\n\nod = {\n    'od_id': od_name + '_' + organization + \"_communes\",\n    'from_date': \"2024-01-01 09:00:00\",\n    'to_date':   \"2024-01-01 09:59:59\",\n    'organization': organization,\n    'value_type': 'vehicles',\n    'value_unit': 'unit',\n    'description': 'OD test flow',\n    'kind': 'Test',\n    'mode': 'Test',\n    'transport': 'vehicles',\n    'purpose': 'Test',\n    'x_orig': x_orig,\n    'y_orig': y_orig,\n    'x_dest': x_dest,\n    'y_dest': y_dest,\n    'values': values,\n    'colormap_name': 'ODcolormap2',\n    'representation': 'MGRS'\n}\n\nmsg.payload = od;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":620,"wires":[["054c400938d1e834","a506d09105f9ac72"]]},{"id":"a506d09105f9ac72","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\nmodel = 'ODMModel'\ntype = 'ODMModel'\ncontextbroker = '<CONTEXTBROKER>'\nproducer = '<PRODUCER>'\nsubnature = 'People_counter'\norganization = 'ORG'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + `/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`\n\nmsg = {\n    url: baseUrl +`/odmm-insert/api/insert?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`,\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":620,"wires":[["176687af6b6c54ef"]]},{"id":"176687af6b6c54ef","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":660,"y":620,"wires":[["adf629df2b452647"]]},{"id":"d898c06c5c37708c","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":350,"y":520,"wires":[]},{"id":"f9634ab5da7ad6ac","type":"comment","z":"3614f27671e9d56f","name":"Generate origin and destination and call OD-BUILD","info":"","x":250,"y":440,"wires":[]},{"id":"bfbf36ba3ab20944","type":"comment","z":"3614f27671e9d56f","name":"Get GADM communes and OD values and setup OD-INSERT request","info":"","x":310,"y":580,"wires":[]},{"id":"054c400938d1e834","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":640,"wires":[]},{"id":"adf629df2b452647","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":620,"wires":[]},{"id":"d76685a86bc16f37","type":"get-access-token","z":"3614f27671e9d56f","name":"","x":350,"y":400,"wires":[["246a31b3b50ea756"]]},{"id":"15c594e1973b7a7c","type":"zip","z":"3614f27671e9d56f","name":"","mode":"compress","filename":"","compressionlevel":"6","outasstring":false,"x":340,"y":480,"wires":[["d2ee0be851ad0234"]]},{"id":"308e1b00df7c3199","type":"zip","z":"3614f27671e9d56f","name":"","mode":"compress","filename":"","outasstring":false,"x":120,"y":2040,"wires":[["b076cdf30d0a79c5"]]},{"id":"b8d417c0e5d1e024","type":"function","z":"3614f27671e9d56f","name":"CREATE OD FLOWS","func":"day = msg.payload;\n\narea_list = [\n    ['Sesto Fiorentino', 'TEST-0'],\n    ['Scandicci', 'TEST-2'],\n    ['Peretola', 'TEST-3'],\n    ['Pelago', 'TEST-4'],\n    ['Antella', 'TEST-5'],\n    ['Firenze', 'TEST-1']\n];\n\nvalues = [];\norig_poi = [];\ndest_poi = [];\n\nfor(let idx_o=0; idx_o < area_list.length; idx_o++){ \n    for(let idx_d=0; idx_d < area_list.length; idx_d++){ \n        if (idx_d != idx_o){\n            orig_poi.push(area_list[idx_o][1]);\n            dest_poi.push(area_list[idx_d][1]);\n            values.push(Math.round(Math.random() * (500 - 100) + 100));\n        }\n    }\n}\n\nbuf = [\n    {\n        filename: \"orig_poi_id\",\n        payload: JSON.stringify(orig_poi)\n    },\n    {\n        filename: \"dest_poi_id\",\n        payload: JSON.stringify(dest_poi)\n    }\n];\n\nmsg.payload = buf;\n\n\nvalues = {\n    topic: \"values\",\n    payload: {\n        orig_comm: orig_poi,\n        dest_comm: dest_poi,\n        values: values,\n        dates: day\n    }\n};\n\nreturn [values, msg]","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":1940,"wires":[["c948bc0b36925713","4edfbdcfe4703a72"],["308e1b00df7c3199"]],"outputLabels":["values","msg"]},{"id":"b076cdf30d0a79c5","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/buildcommunes';\n\nmsg = {\n    url: baseUrl + '/odmm-build/api/buildcommunes',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":2040,"wires":[["a841aedabb2d5842","223a340e7ca99f3c"]]},{"id":"a841aedabb2d5842","type":"http request","z":"3614f27671e9d56f","name":"od-build","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","x":580,"y":2040,"wires":[["baa0f3dee455a98e"]]},{"id":"223a340e7ca99f3c","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":430,"y":2060,"wires":[]},{"id":"baa0f3dee455a98e","type":"function","z":"3614f27671e9d56f","name":"","func":"msg.topic = \"id_data\";\nmsg.complete = 1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":2140,"wires":[["1ab37647ba83c4c1","4edfbdcfe4703a72"]]},{"id":"1ab37647ba83c4c1","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":250,"y":2160,"wires":[]},{"id":"4edfbdcfe4703a72","type":"join","z":"3614f27671e9d56f","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":390,"y":2140,"wires":[["67fb094d9c4204bf","dd9dedb98a125fae"]]},{"id":"67fb094d9c4204bf","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":570,"y":2140,"wires":[]},{"id":"dd9dedb98a125fae","type":"function","z":"3614f27671e9d56f","name":"DEFINE INSERT JSON","func":"id_data = msg.payload.id_data;\n\nvisite = msg.payload.values.values;\n\ndates = msg.payload.values.dates;\n\norig_communes = [];\ndest_communes = [];\nvalues = [];\n\n\nfor(let i=0; i<id_data.length; i++){\n    orig_communes.push(id_data[i].orig_commune);\n    dest_communes.push(id_data[i].dest_commune);\n    values.push(visite[i].toString());\n}\n\nod_name = \"odNodeRed3\";\norganization = \"ORG\";\n\nod = {\n    'od_id': od_name + '_' + organization + \"_poi\",\n    'from_date': dates.split('T')[0] + \" 00:00:00\",\n    'to_date':   dates.split('T')[0] + \" 23:59:59\",\n    'organization': organization,\n    'value_type': 'visitor',\n    'value_unit': 'unit',\n    'description': 'OD test flows',\n    'kind': '',\n    'mode': '',\n    'transport': '',\n    'purpose': '',\n    'orig_communes': orig_communes,\n    'dest_communes': dest_communes,\n    'values': values,\n    'source': 'italy_epgs4326',\n    'colormap_name': 'ODcolormap2',\n    'representation': 'CUSTOM'\n}\n\nmsg.payload = od;\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":2300,"wires":[["4f5981934466b9da","d3c2ca46a85f1852"]]},{"id":"4f5981934466b9da","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":2340,"wires":[]},{"id":"d3c2ca46a85f1852","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\nmodel = 'ODMModel'\ntype = 'ODMModel'\ncontextbroker = '<CONTEXTBROKER>'\nproducer = '<PRODUCER>'\nsubnature = 'People_counter'\norganization = 'ORG'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + `/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`\n\nmsg = {\n    url: baseUrl +`/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`,\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":2300,"wires":[["8fde375e3bb57ba1","d2b5eff7ccf4cc16"]]},{"id":"8fde375e3bb57ba1","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":590,"y":2340,"wires":[]},{"id":"d2b5eff7ccf4cc16","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","x":560,"y":2300,"wires":[["7d7a87636f8043d9"]]},{"id":"7d7a87636f8043d9","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":710,"y":2300,"wires":[]},{"id":"1fc98fa877a2b2d3","type":"function","z":"3614f27671e9d56f","name":"DATES","func":"days = [\n    new Date('2022-07-01').toISOString(),\n    new Date('2022-07-02').toISOString()\n];\n\nmsg.payload = days;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":1820,"wires":[["b53b6c2efaa8f2ba"]]},{"id":"26f864beb2675e46","type":"inject","z":"3614f27671e9d56f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":1480,"wires":[["4c77aaf9e8335de4"]]},{"id":"b53b6c2efaa8f2ba","type":"split","z":"3614f27671e9d56f","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":250,"y":1820,"wires":[["3e70d3711ff8e870","07ab81147162297a"]]},{"id":"3e70d3711ff8e870","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":570,"y":1820,"wires":[]},{"id":"07ab81147162297a","type":"delay","z":"3614f27671e9d56f","name":"","pauseType":"rate","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"15","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":400,"y":1840,"wires":[["b8d417c0e5d1e024"]]},{"id":"c948bc0b36925713","type":"debug","z":"3614f27671e9d56f","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":1940,"wires":[]},{"id":"81eac5619068eab3","type":"comment","z":"3614f27671e9d56f","name":"Custom area example","info":"","x":200,"y":1440,"wires":[]},{"id":"4685c85b82b71bf4","type":"comment","z":"3614f27671e9d56f","name":"Define datetimes and create a message flow for each single date","info":"","x":290,"y":1780,"wires":[]},{"id":"d4cae08b2037d0b7","type":"comment","z":"3614f27671e9d56f","name":"Create some fake OD flows for each date, with origin, destination, and values","info":"","x":330,"y":1900,"wires":[]},{"id":"95767af5a54b2468","type":"comment","z":"3614f27671e9d56f","name":"Compress the origin-destination data and call OD-BUILD API","info":"","x":280,"y":2000,"wires":[]},{"id":"93658b459afec034","type":"comment","z":"3614f27671e9d56f","name":"Get the OD-BUILD output (UIDs) and join them the the flow values and dates generated above","info":"","x":380,"y":2100,"wires":[]},{"id":"d1e8ad2827f80552","type":"comment","z":"3614f27671e9d56f","name":"Prepare the ODM data to be passed to the OD-INSERT API","info":"","x":270,"y":2220,"wires":[]},{"id":"1b17d44fa2e6d799","type":"comment","z":"3614f27671e9d56f","name":"Set ODM name in this node!","info":"","x":180,"y":2260,"wires":[]},{"id":"4c77aaf9e8335de4","type":"get-access-token","z":"3614f27671e9d56f","name":"","x":350,"y":1480,"wires":[["186f620b57dcda7d","d209ceab809aeb64"]]},{"id":"186f620b57dcda7d","type":"function","z":"3614f27671e9d56f","name":"INSERT CIRCULAR AREA","func":"flow.set('access_token', msg.payload)\nmsg.payload = [\n    {\"poi_id\": \"TEST-0\", \"name\":\"Test poi TEST-0\", \"latitude\":43.83393771026881, \"longitude\":11.200537007559367, \"radius\":1000},\n    {\"poi_id\": \"TEST-1\", \"name\":\"Test poi TEST-1\",\"latitude\":43.77090221578128, \"longitude\":11.297571901733663, \"radius\":10},\n    {\"poi_id\": \"TEST-2\", \"name\":\"Test poi TEST-2\",\"latitude\":43.75460355642767, \"longitude\":11.194275728179242, \"radius\":100}\n]\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":1560,"wires":[["ed17f65cc2cb2ba6"]]},{"id":"cc3399d0f6db1260","type":"function","z":"3614f27671e9d56f","name":"INSERT CUSTOM AREA","func":"let areas = [\n    {\"coordinates\":[[[11.19562601057774,43.80097461512503],[11.187456997424704,43.79753337553075],[11.191799679167787,43.79319313533719],[11.204038016445736,43.79102294737737],[11.204463030312638,43.79681003368833],[11.19984731219975,43.802574675496544],[11.19562601057774,43.80097461512503]]],\"type\":\"Polygon\"},\n    {\"coordinates\":[[[11.505422556553697,43.77157098196125],[11.504939301960206,43.77213721604477],[11.50424633310729,43.77208454333302],[11.503507774199392,43.77159073440336],[11.503617190333301,43.771024495145355],[11.504155152995907,43.77003685570361],[11.505167252240767,43.769398173514105],[11.506512255404175,43.769593054980646],[11.506740205684707,43.76988935072427],[11.506603435516922,43.77079139761827],[11.506038118820527,43.771522243153925],[11.505422556553697,43.77157098196125]]],\"type\":\"Polygon\"},\n    {\"coordinates\":[[[11.3220618965359,43.72655842704762],[11.323494696127767,43.72638058951935],[11.322953294754853,43.72723420484036],[11.3220618965359,43.72655842704762]]],\"type\":\"Polygon\"}\n]\n\nmsg.payload = [\n    {\"poi_id\": \"TEST-3\", \"name\":\"Test poi TEST-3\",\"custom_area\":JSON.stringify(areas[0])},\n    {\"poi_id\": \"TEST-4\", \"name\":\"Test poi TEST-4\",\"custom_area\":JSON.stringify(areas[1])},\n    {\"poi_id\": \"TEST-5\", \"name\":\"Test poi TEST-5\",\"custom_area\":JSON.stringify(areas[2])}\n]\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":1620,"wires":[["a4b571b5c0e81abf"]]},{"id":"0c92b56991019edb","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":920,"y":1560,"wires":[["b19b6b633d42bdf6"]]},{"id":"b19b6b633d42bdf6","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1070,"y":1560,"wires":[]},{"id":"a4b571b5c0e81abf","type":"split","z":"3614f27671e9d56f","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":530,"y":1620,"wires":[["420d0ea5aae5c501"]]},{"id":"ba5af22296fe3ac1","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":500,"y":1680,"wires":[["b9f3f4c78306089b","48c8d12a2ddf0c9d"]]},{"id":"b9f3f4c78306089b","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":690,"y":1680,"wires":[]},{"id":"be5ce640442a1370","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/buildcommunes';\n\nmsg = {\n    url: baseUrl + '/odmm-insert/api/insertcirculararea',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":1560,"wires":[["0c92b56991019edb"]]},{"id":"420d0ea5aae5c501","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/buildcommunes';\n\nmsg = {\n    url: baseUrl + '/odmm-insert/api/insertcustomarea',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":130,"y":1680,"wires":[["5aeec8cf25acc20d"]]},{"id":"75dedcf811ac1539","type":"comment","z":"3614f27671e9d56f","name":"Insert circular and polygonal areas into database","info":"","x":240,"y":1520,"wires":[]},{"id":"ed17f65cc2cb2ba6","type":"split","z":"3614f27671e9d56f","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":390,"y":1560,"wires":[["841324bda90afb71"]]},{"id":"48c8d12a2ddf0c9d","type":"join","z":"3614f27671e9d56f","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":130,"y":1740,"wires":[["1fc98fa877a2b2d3"]]},{"id":"d209ceab809aeb64","type":"delay","z":"3614f27671e9d56f","name":"","pauseType":"delay","timeout":"45","timeoutUnits":"seconds","rate":"1","nbRateUnits":"15","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":120,"y":1620,"wires":[["cc3399d0f6db1260"]]},{"id":"841324bda90afb71","type":"delay","z":"3614f27671e9d56f","name":"","pauseType":"rate","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"15","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":560,"y":1560,"wires":[["be5ce640442a1370"]]},{"id":"5aeec8cf25acc20d","type":"delay","z":"3614f27671e9d56f","name":"","pauseType":"rate","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"15","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":320,"y":1680,"wires":[["ba5af22296fe3ac1"]]},{"id":"db543953931521f2","type":"comment","z":"3614f27671e9d56f","name":"GADM area example","info":"","x":160,"y":2440,"wires":[]},{"id":"6783d6fdc8333fc1","type":"function","z":"3614f27671e9d56f","name":"GENERATE DATA","func":"flow.set('access_token', msg.payload)\n\nx_orig = [11.254224622517292, 11.167166955936286, 11.29326591697936]\ny_orig = [43.68395500620326, 43.8648446568991, 43.806420216210135]\nx_dest = [11.253283529320194, 11.253283529320194, 11.253283529320194]\ny_dest = [43.78755386935608, 43.78755386935608, 43.78755386935608]\n\nbuf = [\n    {\n        filename: \"x_orig\",\n        payload: JSON.stringify(x_orig)\n    },\n    {\n        filename: \"y_orig\",\n        payload: JSON.stringify(y_orig)\n    },\n    {\n        filename: \"x_dest\",\n        payload: JSON.stringify(x_dest)\n    },\n    {\n        filename: \"y_dest\",\n        payload: JSON.stringify(y_dest)\n    }\n];\nmsg.payload = buf;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":150,"y":2560,"wires":[["a2c6b69b48b02367","17a6180e5b01cd59"]]},{"id":"69d6a1805eeb7e32","type":"inject","z":"3614f27671e9d56f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":2480,"wires":[["881d9dd7566f56e3"]]},{"id":"7a6e376a64878d67","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + '/odmm-build/api/build';\n\nmsg = {\n    url: baseUrl + '/odmm-build/api/buildcommunes',\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":2560,"wires":[["44b81dacae64d317","24e47e1396fcfd74"]]},{"id":"44b81dacae64d317","type":"http request","z":"3614f27671e9d56f","name":"od-build","method":"use","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":680,"y":2560,"wires":[["bfe9648feb05f063","ff06d0786befa377"]]},{"id":"bfe9648feb05f063","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":2560,"wires":[]},{"id":"ff06d0786befa377","type":"function","z":"3614f27671e9d56f","name":"SETUP INSERT","func":"orig_communes = [];\ndest_communes = [];\nvalues = [];\n\nfor(let i=0; i<msg.payload.length; i++){\n    orig_communes.push(msg.payload[i].orig_commune);\n    dest_communes.push(msg.payload[i].dest_commune);\n    values.push(msg.payload[i].value);\n}\n\nvar organization = \"ORG\";\nod_name = \"odNodeRed4\";\n\nod = {\n    'od_id': od_name + '_' + organization + \"_communes\",\n    'from_date': \"2024-01-01 09:00:00\",\n    'to_date':   \"2024-01-01 09:59:59\",\n    'organization': organization,\n    'value_type': 'vehicles',\n    'value_unit': 'unit',\n    'description': 'OD test flow',\n    'kind': 'Test',\n    'mode': 'Test',\n    'transport': 'vehicles',\n    'purpose': 'Test',\n    'orig_communes': orig_communes, \n    'dest_communes': dest_communes, \n    'values': values,\n    'colormap_name': 'ODcolormap2',\n    'representation': 'GADM'\n}\n\nmsg.payload = od;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":2700,"wires":[["9ae7b8f065e97626","ea183a08c2b419a2"]]},{"id":"ea183a08c2b419a2","type":"function","z":"3614f27671e9d56f","name":"REQUEST","func":"const data = msg.payload;\nconst baseUrl = 'https://www.snap4city.org'\n\nmodel = 'ODMModel'\ntype = 'ODMModel'\ncontextbroker = '<CONTEXTBROKER>'\nproducer = '<PRODUCER>'\nsubnature = 'People_counter'\norganization = 'ORG'\n\n//msg.payload = '-H \"Content-Type: application/json\" -H \"Authorization: Bearer ' + flow.get('access_token')+ '\" --data-binary \"' + data + '\" -X POST ' + baseUrl + `/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`\n\nmsg = {\n    url: baseUrl +`/odmm-insert/api/insertcommunes?model=${model}&type=${type}&contextbroker=${contextbroker}&organization=${organization}&producer=${producer}&subnature=${subnature}`,\n    method: 'POST',\n    payload: data,\n    headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer '+flow.get('access_token')}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":2700,"wires":[["038912d3a6d21ab6"]]},{"id":"038912d3a6d21ab6","type":"http request","z":"3614f27671e9d56f","name":"od-insert","method":"use","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":660,"y":2700,"wires":[["3d76a0b7e786b289"]]},{"id":"a2c6b69b48b02367","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":350,"y":2600,"wires":[]},{"id":"928a58dde5a6b9c9","type":"comment","z":"3614f27671e9d56f","name":"Generate origin and destination and call OD-BUILD","info":"","x":250,"y":2520,"wires":[]},{"id":"58f9ac82d2cb85ea","type":"comment","z":"3614f27671e9d56f","name":"Get GADM communes and OD values and setup OD-INSERT request","info":"","x":310,"y":2660,"wires":[]},{"id":"9ae7b8f065e97626","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":2720,"wires":[]},{"id":"3d76a0b7e786b289","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":830,"y":2700,"wires":[]},{"id":"881d9dd7566f56e3","type":"get-access-token","z":"3614f27671e9d56f","name":"","x":350,"y":2480,"wires":[["6783d6fdc8333fc1"]]},{"id":"17a6180e5b01cd59","type":"zip","z":"3614f27671e9d56f","name":"","mode":"compress","filename":"","compressionlevel":"6","outasstring":false,"x":340,"y":2560,"wires":[["7a6e376a64878d67"]]},{"id":"24e47e1396fcfd74","type":"debug","z":"3614f27671e9d56f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":2500,"wires":[]}]