Search code examples
csvd3.jstopojson

TopoJson makefile ignoring external properties file


I am trying to make a topojson file with csv data embedded using a makefile. I am using Mike Bostock's us-atlas as a guide.

topo/us-counties-10m-ungrouped.json: shp/us/counties.shp
    mkdir -p $(dir $@)
    topojson \
      -o us_counties.json \
      --no-pre-quantization \
      --post-quantization=1e6 \
      --external-properties=output.csv \
      --id-property=FIPS \
      --properties="County=County" \
      --properties="PerChildrenPos=+PerChildrenPos" \
      --simplify=7e-7 \
      -- $<

It creates the topojson I need but completely ignores the output.csv file. Here is a glimpse at what it returns.

{"type":"Polygon","id":"53051","properties":{"code":"53051"},"arcs":[[-22,79,80,-75,81]]}

Here's what I need it to return.

{"type":"Polygon","id":"53051","properties":{"code":"53051", "County":"Los Angeles", "PerChildrenPos": 10},"arcs":[[-22,79,80,-75,81]]}

Any ideas why it might be ignoring the csv file, I've tested moving it around to see if perhaps it was unaccessible or something?

Thanks in advance.


Solution

  • According to the documentation here: https://github.com/mbostock/topojson/wiki/Command-Line-Reference#external-properties

    (If your CSV file uses a different column name for the feature identifier, you can specify multiple id properties, such as --id-property=+FIPS,+id.)

    It seems that you need to change your --id-property=FIPS \ to something that corresponds to your CSV column names.

    Also for --properties="County=County" \
    I think it should be --properties County=+County \

    Same for --properties="PerChildrenPos=+PerChildrenPos" \
    Should be --properties PerChildrenPos=+PerChildrenPos \

    For --external-properties=output.csv \
    it should be --external-properties output.csv \

    Basically the parameters do not need to be prefixed by an = sign.