Можете ли вы использовать плагин worldmap в node-red для просмотра здания в 3D?

#dictionary #3d #node-red

#словарь #3D #узел-красный

Вопрос:

Я пытаюсь использовать плагин «worldmap» в node-red для отображения 3D-здания в Барселоне, Испания, которое я построил из полигонов, используя координаты из следующего источника (который также показывает, как должно выглядеть здание): http://bl.ocks.org/sigon426/11283563

Проблема в том, что я вижу его только в 2D, как на следующем скриншоте:

скриншот

Документация для плагина worldmap (https://flows.nodered.org/node/node-red-contrib-web-worldmap ) говорит что-то о index3d.html , но когда я перехожу к http://localhost:1880/worldmap/index3d.html вместо того , чтобы http://localhost:1880/worldmap/index.html , я получаю совершенно пустую страницу, вообще без карты.

Я подтвердил, что это НЕ из-за опечатки, потому что, если я намеренно вставляю опечатку, я получаю сообщение об ошибке. Согласно документации, я также пытался использовать свой собственный ключ API (согласно документации), но это тоже не помогло.

Кто-нибудь когда-нибудь получал здание для рендеринга в 3D, и если да, не могли бы вы поделиться своим кодом и / или тем, как вы его получили index3d.html чтобы не быть пустой страницей?

код node-red приведен ниже:

 [
    {
        "id": "21ba508dc4c4653a",
        "type": "tab",
        "label": "Auto-Update_bc",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "00d83d478ca0a1fc",
        "type": "inject",
        "z": "21ba508dc4c4653a",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payloadType": "date",
        "x": 130,
        "y": 200,
        "wires": [
            [
                "833bc73b50bcca41"
            ]
        ]
    },
    {
        "id": "5a880b81067dacf2",
        "type": "function",
        "z": "21ba508dc4c4653a",
        "name": "Set Initial conditions",
        "func": "nicons = ["car", "ship", "bus", "plane", "iss", "uav", "friend"];nmsg.payload = {"name":"test", "lat":0.0, "lon":0.0,"icon":icons[Math.floor(Math.random()*icons.length)]};nmsg.timestep = 0;nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 620,
        "y": 200,
        "wires": [
            [
                "33c3faef8e85ea91"
            ]
        ]
    },
    {
        "id": "9f2cc79939761256",
        "type": "worldmap",
        "z": "21ba508dc4c4653a",
        "name": "",
        "lat": "",
        "lon": "",
        "zoom": "",
        "layer": "OSMG",
        "cluster": "",
        "maxage": "",
        "usermenu": "show",
        "layers": "show",
        "panit": "false",
        "panlock": "false",
        "zoomlock": "false",
        "hiderightclick": "false",
        "coords": "none",
        "showgrid": "false",
        "allowFileDrop": "false",
        "path": "/worldmap",
        "overlist": "DR,CO,RA,DN,HM",
        "maplist": "OSMG,OSMC,EsriC,EsriS,EsriT,EsriDG,UKOS,SW",
        "mapname": "",
        "mapurl": "",
        "mapopt": "",
        "mapwms": false,
        "x": 1100,
        "y": 200,
        "wires": []
    },
    {
        "id": "33c3faef8e85ea91",
        "type": "function",
        "z": "21ba508dc4c4653a",
        "name": "Move Object",
        "func": "if (global.instruction == "BREAK") {n    msg.payload.thing = "Done";n    throw "I'm Done";n}nn/*nicons = ["car", "ship", "bus", "plane", "iss", "uav", "friend"];nmsg.payload.icon = icons[Math.floor(Math.random()*icons.length)];nmsg.payload.name = "test"   msg.timestep;nmsg.timestep = msg.timestep   1;nmsg.payload.lon = msg.payload.lon    1;nmsg.payload.lon = msg.payload.lon % 180;n*/nnvar geo = { "type": "FeatureCollection",n"features": [n          {n            "type": "Feature",n            "properties": {n              "wallColor": "rgb(255,0,0)",n              "roofColor": "rgb(255,128,0)",n              "height": 30,n              "minHeight": 0,n              "piso": 0n            },n            "geometry": {n              "type": "Polygon",n              "coordinates": [n                [n                  [2.1853861212730408, 41.38901629106905],n                  [2.185828685760498, 41.388623892423745],n                  [2.1864724159240723, 41.38910281968238],n                  [2.185984253883362, 41.3894167364756],n                  [2.1853861212730408, 41.38901629106905]n                ]n              ]n            }n          },n          {n            "type": "Feature",n            "properties": {n              "wallColor": "",n              "roofColor": "",n              "height": 60,n              "minHeight": 30,n              "piso": 1n            },n            "geometry": {n              "type": "Polygon",n              "coordinates": [n                [n                  [2.185606062412262, 41.389012266479575],n                  [2.1858233213424683, 41.3888210981928],n                  [2.186225652694702, 41.38910483197434],n                  [2.1859654784202576, 41.38927386427688],n                  [2.185606062412262, 41.389012266479575]n                ]n              ]n            }n          },n          {n            "type": "Feature",n            "properties": {n              "wallColor": "",n              "roofColor": "",n              "height": 90,n              "minHeight": 60,n              "piso": 2n            },n            "geometry": {n              "type": "Polygon",n              "coordinates": [n                [n                  [2.185753583908081, 41.38902031565826],n                  [2.1858367323875423, 41.388959946793776],n                  [2.1860405802726746, 41.38910885655806],n                  [2.1859386563301086, 41.389177274443526],n                  [2.1857374906539917, 41.389022327952766],n                  [2.185753583908081, 41.38902031565826]n                ]n              ]n            }n          },n          {n            "type": "Feature",n            "properties": {n              "wallColor": "rgb(255,0,0)",n              "roofColor": "rgb(255,128,0)",n              "height": 120,n              "minHeight": 90,n              "piso": 3n            },n            "geometry": {n              "type": "Polygon",n              "coordinates": [n                [n                  [2.185858190059662, 41.38905653695002],n                  [2.185858190059662, 41.38907867217396],n                  [2.185882329940796, 41.38907867217396],n                  [2.185882329940796, 41.38905653695002],n                  [2.185858190059662, 41.38905653695002]n                ]n              ]n            }n          }n]n}nnmsg.payload.command = {map:{overlay:"Building "   msg.timestep.toString(), geojson:geo, fit:false}};nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 850,
        "y": 200,
        "wires": [
            [
                "73887a06a6c29e1f",
                "9f2cc79939761256"
            ]
        ]
    },
    {
        "id": "833bc73b50bcca41",
        "type": "change",
        "z": "21ba508dc4c4653a",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "instruction",
                "pt": "global",
                "to": "GO",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 360,
        "y": 200,
        "wires": [
            [
                "5a880b81067dacf2"
            ]
        ]
    },
    {
        "id": "d2eb2693c01b45b5",
        "type": "switch",
        "z": "21ba508dc4c4653a",
        "name": "",
        "property": "instruction",
        "propertyType": "global",
        "rules": [
            {
                "t": "neq",
                "v": "STOP",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 910,
        "y": 280,
        "wires": [
            [
                "33c3faef8e85ea91"
            ]
        ]
    },
    {
        "id": "73887a06a6c29e1f",
        "type": "delay",
        "z": "21ba508dc4c4653a",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 780,
        "y": 280,
        "wires": [
            [
                "d2eb2693c01b45b5"
            ]
        ]
    },
    {
        "id": "b5cf5eebe2c484d5",
        "type": "inject",
        "z": "21ba508dc4c4653a",
        "name": "Breaker",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payloadType": "date",
        "x": 150,
        "y": 380,
        "wires": [
            [
                "1bccee288132318f"
            ]
        ]
    },
    {
        "id": "1bccee288132318f",
        "type": "change",
        "z": "21ba508dc4c4653a",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "instruction",
                "pt": "global",
                "to": "STOP",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 370,
        "y": 380,
        "wires": [
            []
        ]
    }
]
 

Комментарии:

1. Я думаю, что я разобрался в этом вопросе. Я повторно сгенерировал ключ API, на этот раз без установки каких-либо дополнительных флажков. Это устранило проблему index3d.html рендеринг в виде пустой страницы.

Ответ №1:

Похоже, что поставщик 3dmaps удалил анонимный доступ в рамках перехода к коммерческой организации, бесплатный доступ отмечен как скоро.

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

Я верю, что вы можете получить ключ здесь:

https://3dbuildings.com/maps

Редактировать:

По-видимому, вам нужен ключ API от https://mapbox.com нет https://3dbuildings.com

И вам нужно раскомментировать здесь 2 строки (добавить ключ api) и закомментировать строку сразу после комментария

https://github.com/dceejay/RedMap/blob/38cf0b20f4ce2567de57569531fa3177a6728346/worldmap/index3d.html#L20

 // If you have a mapbox API key it may be better to use that - uncomment these lines and comment out the mbstyle below.
mapboxgl.accessToken = 'insert your key here';
var mbstyle = 'mapbox://styles/mapbox/streets-v9';

// var mbstyle = 'https://data.osmbuildings.org/0.2/anonymous/style.json';
 

Комментарии:

1. Как я упоминал в своем первоначальном сообщении, я уже пробовал это. Смогли ли вы заставить свой работать, делая это? Если да, как вы думаете, вы могли бы а) поделиться своим кодом node-red и б) указать мне URL, по которому вам нужно было перейти (index3d.html , Я предполагаю)?

2. DCJ (автор узлов) заставил его работать со своим (старым) ключом API, я просто пересылал его ответ, когда показывал ему вопрос (он не использует SO)

3. Я понимаю. 1) Я очень новичок в node-red. Не могли бы вы пояснить, что означает «ТАК»? 2) Я предполагаю, что нет никаких шансов получить образец кода или точно выяснить, следует ли переходить к index3d или index?

4. ИТАК -> Переполнение стека. Если вы хотите попробовать поговорить с DCJ напрямую, я предлагаю вам опубликовать сообщение либо на форуме, либо на узле-RED Slack

5. Я понимаю. Спасибо !!.