mkyral / josm-tracer

A tracer plugin for josm
GNU General Public License v2.0
12 stars 6 forks source link

ruian nevraci outer pole -- parseJSON nefunguje #29

Closed jirislaby closed 8 years ago

jirislaby commented 8 years ago

Toto mi vraci http://josm.poloha.net/tracer/:

{
        "coordinates": {
                "lat": "49.47734765569628",
                "lon":"17.089869083922576"
        },
        "source": "cuzk:ruian",
        "stavebni_objekt": {
                "ruian_id": "48909637",
                "cislo_domovni": null,
                "cislo_domovni_typ": "bez \u010d.p.\/\u010d.e.",
                "cislo_orientacni": null,
                "adresni_misto_kod": null,
                "ulice": null,
                "cast_obce": null,
                "mestska_cast": null,
                "obec": null,
                "okres": null,
                "kraj": null,
                "psc": null,
                "pocet_podlazi": null,
                "zpusob_vyuziti_kod": "18",
                "zpusob_vyuziti_key": "building",
                "zpusob_vyuziti_val": "garage",
                "pocet_bytu": null,
                "dokonceni": null,
                "plati_od":"01.07.2011"
        },
        "geometry": [
                [17.089850261256, 49.477369366781],
                [17.089891416106, 49.477368749114],
                [17.089890113743, 49.477319313331],
                [17.089848684352, 49.477319912806],
                [17.089850261256, 49.477369366781]
        ],
        "adresni_mista":[]
}

Je videt, ze geometry nema ani outer ani inner, jsou tam ciste souradnice. Bylo by mozne pridat test na geometry -- kdyz je geometry pole, ber to jako outer?

mkyral commented 8 years ago

Zajímavé. Tohle jsem ještě neviděl. Zkusím zjistit, kolik takových případů v ruianu je. Je možné, že problém bude spíše v tom php, co generuje json.

jirislaby commented 8 years ago

On 10/31/2016, 10:05 AM, Marián Kyral wrote:

Zajímavé. Tohle jsem ještě neviděl. Zkusím zjistit, kolik takových případů v ruianu je. Je možné, že problém bude spíše v tom php, co generuje json.

Pro upresneni, mne to vraci snad vsude, kde jsem zkousel -- ruzne v Brne a Prostejove.

js

mkyral commented 8 years ago

Tak to je ještě divnější. Večer nebo zítra ráno ve vlaku na to mrknu.

Ten server skript je https://github.com/mkyral/josm-tracer/blob/development/servers/ruianBuildings/index.php

jirislaby commented 8 years ago

Jo, to asi odpovida:

  if (pg_num_rows($result) == 1 && !"$req" == "full")
  {
    $geom = pg_result($result,0,"geom");
    $geometry=json_decode($geom,true);
    $data["geometry"] = $geometry['coordinates'][0];
  }
  else if (pg_num_rows($result) > 1 || "$req" == "full")
  {
    $geom = array();
    $inners = array();
    for ($i = 0; $i < pg_num_rows($result); $i++)
    {
      $row = pg_result($result,$i,"geom");
      $geometry=json_decode($row,true);
      if ($i == 0)
      {
        $geom['outer'] =$geometry['coordinates'][0];
      } else if ($geometry['coordinates'][0][0] == $geom['outer'][0])
      {
        // Ignore dulicated outer ways on the same position
        break;
      } else
      {
        array_push($inners, $geometry['coordinates'][0]);
      }
    }
      $geom['inners'] = $inners;
      $data["geometry"] = $geom;
  } else
  {
    $data["geometry"] = array();
  }

Pokud se dobre divam (neumim php, umim perl a c), ja dostavam data evidentne z toho prvniho ifu.

jirislaby commented 8 years ago

ja dostavam data evidentne z toho prvniho ifu.

Ale to je divne, bo si zadam o full (tcpdump):

10:18:02.078877 IP6 (flowlabel 0xf3da1, hlim 64, next-header TCP (6) payload length: 310) f.9.1.0.0.0.0.0.0.0.0.0.a.a.a.a.5.8.d.a.7.2.e.2.0.4.2.4.1.0.a.2.v6.cust.nbox.cz.58574 > mapserv.poloha.net.http: Flags [P.], cksum 0xd292 (incorrect -> 0x620b), seq 1:279, ack 1, win 225, options [nop,nop,TS val 247200044 ecr 1315171533], length 278: HTTP, length: 278
        GET /tracer//ruian-buildings/?req=full&lat=49.47744873576669&lon=17.09126115040131 HTTP/1.1
        User-Agent: JOSM/1.5 (10966 en) Linux openSUSE Tumbleweed Java/1.8.0_101
        Host: josm.poloha.net
        Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
        Connection: keep-alive
jirislaby commented 8 years ago

Nevim, jak v php, ale tohle je v C nesmysl :):

!"$req" == "full"

Bud tam chybi zavorky, nebo tam ma byt !=

mkyral commented 8 years ago

To by mělo být dobře. Ale to je teď jedno. Jakou máš verzi traceru? Odkud jsi instaloval? A jaký request jde na server (vypisuje se to do terminálu/konzole)

Protože mně to na dotaz http://josm.poloha.net/ruian-buildings/?req=full&lat=49.47734765569628&lon=17.089869083922576

vrátí "outer":

{

    "coordinates": {
        "lat": "49.47734765569628",
        "lon": "17.089869083922576"
    },
    "source": "cuzk:ruian",
    "stavebni_objekt": {
        "ruian_id": "48909637",
        "cislo_domovni": null,
        "cislo_domovni_typ": "bez č.p./č.e.",
        "cislo_orientacni": null,
        "adresni_misto_kod": null,
        "ulice": null,
        "cast_obce": null,
        "mestska_cast": null,
        "obec": null,
        "okres": null,
        "kraj": null,
        "psc": null,
        "pocet_podlazi": null,
        "zpusob_vyuziti_kod": "18",
        "zpusob_vyuziti_key": "building",
        "zpusob_vyuziti_val": "garage",
        "pocet_bytu": null,
        "dokonceni": null,
        "plati_od": "01.07.2011"
    },
    "geometry": {
        "outer": [
            [
                17.089850261256,
                49.477369366781
            ],
            [
                17.089891416106,
                49.477368749114
            ],
            [
                17.089890113743,
                49.477319313331
            ],
            [
                17.089848684352,
                49.477319912806
            ],
            [
                17.089850261256,
                49.477369366781
            ]
        ],
        "inners": [ ]
    },
    "adresni_mista": [ ]

}

Vypadá to, že máš nainstalovanou nějakou starou verzi traceru. Nejnovější se instaluje pouze přes oficiální repozitáž pluginů v josm. Není potřeba nic ručně stahovat ani instalovat.

Možná bych mohl ty staré url znefunkčnit. Alespoň se pozná, kdo ještě neaktualizoval :-D

mkyral commented 8 years ago

Případně, ještě mně napadá, jestli nemáš tuto url zadanou v konfiguraci. Tu ideálně smaž.

ruian

jirislaby commented 8 years ago

Případně, ještě mně napadá, jestli nemáš tuto url zadanou v konfiguraci.

Ano, to bylo ono. Jak jsem psal vys, ja jsem se ptal serveru:

/tracer//ruian-buildings/?req=full&lat=49.47744873576669&lon=17.09126115040131 HTTP/1.1

Kdyz to manualni URL vypnu, tak to funguje.

mkyral commented 8 years ago

OK. Tak hlavně, že se to vyřešilo. Zavírám.