2013-08-26 19 views
17

böyle bir data.tsv dosyası Verilen: (yapı doğrudur, sayısal değerler tesadüfi)Topojson dosyasına özellikler nasıl eklenir?

{ 
"type":"Topology", 
"transform": 
    { 
    "scale": [0.0015484881821515486,0.0010301030103010299], 
    "translate":[-5.491666666666662,41.008333333333354] 
    }, 
"objects": 
    { 
    "states": 
     { 
     "type":"GeometryCollection", 
     "geometries": 
      [ 
      {"type":"Polygon","arcs":[[0]],"properties":{"code_2":"AL"}}, 
      {"type":"Polygon","arcs":[[1]],"properties":{"code_2":"AK"}} 
      ] 
     } 
    }, 
"arcs": 
    [ 
     [[2466,9916],[-25,-5],[3,-13]], 
     [[2357,9852],[1,-2],[1,-2]] 
    ] 
} 

nasıl böyle bir topojson.json dosya Verilen

id code name 
1 AL Alabama 
2 AK Alaska 
4 AZ Arizona 
5 AR Arkansas 
6 CA California 
... ... ... 

ortak alanların (1) json dosyasına başka bir alanın (2) değerlerini enjekte etmek için kullanılması?

1]: data.txt#code ve topojson.txt.objects.states.geometries.properties.code_2

2]: data.txt#name

sonuç olmalıdır içerir:

  {"type":"Polygon","arcs":[[0]],"properties":{"code_2":"AL", "name":"Alabama" }}, 
      {"type":"Polygon","arcs":[[1]],"properties":{"code_2":"AK", "name":"Alaska" }}, 

DÜZENLEME: Kabul cevap:

topojson -o final.json -e data.tsv --id-property=code_2,code -p code_2,state=name -- topojson.json 
+0

Topojson'u hafifçe düzenledim, böylece her iki şekil de korunur. – Hugolpz

cevap

17

bu kullanmayı deneyin:

topojson -o final.json -e data.tsv --id-property=code_2,code -p code_2,state=name -- topojson.json 

çıkışı olmalıdır hangisi: Command Line Reference wiki itibaren

{ 
    "type": "Topology", 
    "transform": { 
     "scale": [ 
      0.000016880209206372492, 
      0.000007005401010148724 
     ], 
     "translate": [ 
      -1.8418800213354616, 
      51.15278777877789 
     ] 
    }, 
    "objects": { 
     "states": { 
      "type": "GeometryCollection", 
      "geometries": [ 
       { 
        "type": "Polygon", 
        "arcs": [ 
         [ 
          0 
         ] 
        ], 
        "id": "AK", 
        "properties": { 
         "code_2": "AK", 
         "state": "Alaska" 
        } 
       } 
      ] 
     } 
    }, 
    "arcs": [ 
     [ 
      [ 
       0, 
       588 
      ], 
      [ 
       92, 
       -294 
      ], 
      [ 
       91, 
       -294 
      ], 
      [ 
       -183, 
       588 
      ] 
     ] 
    ] 
} 

:

--id-mülk özelliği özelliğinin adı teşvik etmek geometri için

Bu seçenekle code_2 özelliğini kullanarak, özellik kimliği olarak tanıtın.

Prepend giriş özellik adının önünde bir + bir dizi değerini zorlamak için.

Plus --id-özelliği tarafından başvurulan özellikleri boş veya tanımlanmamış ise

, bunlar çıkış geometrisi nesneden atlandı. Bu nedenle, oluşturulan özellikler belirtilen ada sahip bir özelliğine sahip değilse oluşturulan nesnelerin tanımlı bir kimliği olmayabilir. Eğer bir sayıya AK dize değeri dönüştürmek olamaz Yani

, sen +code ve +code_2 kullanıyor, bunlar muhtemelen undefined bulunmaktadır.

Burada "FIPS" giriş özelliği, bir sayıya zorlanır ve özellik tanımlayıcısı olarak kullanılır; Aynı şekilde, "FIPS" adlı sütun CSV dosyasındaki tanımlayıcısı olarak kullanılır. (CSV dosyası özelliği tanımlayıcı için farklı bir sütun adını kullanıyorsa, birden ID, --id-property=+FIPS,+id olarak özelliklerini belirtebilirsiniz.)

Eğer --id-property=code_2,code seçeneğe code eklemek zorunda yüzden bu. Eşleme işlemi bu şekilde yapılır (topojson.json ve veriden code sütunundan) code_2.

Sonra çıkış özelliği "işsizlik", giriş özelliğini "oranı" Bizim durumumuzda

tanımlayan dış veri dosyası, unemployment.tsv, oluşturulur -p code_2,state=name belirtir biz code_2 özelliğini korur ve name özelliğini state olarak yeniden adlandırırız. Yukarıda belirtilen belgelerdeki wiki Özellikleri ve Dış Özellikler bölümleri bu konuda oldukça bilgilendirici niteliktedir.

+1

Yapabilirsem, birkaç kez + 1 yapardım. – Hugolpz

+1

Bu artık çalışmıyor. Bir topojson.json dosyası var ve -p yeni özellikler eklemiyor. Sadece geojsonda olanı korur. Belki benim dosyam benzersizdir. Bir çözüm bulmayı çok isterim. – AldoTheApache

+3

Merhaba, cevabı buldum ve belgesel komutunu oluşturdum ama şimdi topojson geo2topo komutuyla yeniden adlandırıldı. geo2topo -o output.json -e data1.csv --id-property = adm1_code, kod -p adm1_kodu, statename = durum - durumlar_topo.json. Bu komut çalışmıyor. Ekstra özellik eklemek için geo2topo dışında farklı komut adı var mı? – AnandSonake

İlgili konular