Combine shapeboundary into one topology type Json

Hello Community,

I would like your help to combine nation, state, county data into one Topology type Json file.

I already managed to fetch and read the shape boundary files, please see this Notebook.Link

Code:

us_nation:

us_nation = fetch_read_zipped_shapefile(
  "https://www2.census.gov/geo/tiger/GENZ2023/shp/cb_2023_us_nation_5m.zip"
)

us_state:

us_state = fetch_read_zipped_shapefile(
  "https://www2.census.gov/geo/tiger/GENZ2023/shp/cb_2023_us_state_5m.zip"
)

function:

fetch_read_zipped_shapefile = async (targetUrl) => {
  const proxyUrl = "https://api.allorigins.win/get?url=";
  const response = await fetch(proxyUrl + encodeURIComponent(targetUrl));
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }
  const data = await response.json();
  // Extracting the zip file content from base64 data
  const base64Data = data.contents.split(",")[1]; // Extract base64 content
  const arrayBuffer = await Uint8Array.from(atob(base64Data), (c) =>
    c.charCodeAt(0)
  ).buffer;
  const shapeFileData = await shp(arrayBuffer);
  return shapeFileData;
}

For reference, Please check this Json

us = d3.json("https://unpkg.com/us-atlas@3/counties-10m.json")

The output will be:

us = Object {
  type: "Topology",
  bbox: Array(4) [-179.14733999999999, -14.552548999999999, 179.77847, 71.352561],
  transform: Object {scale: Array(2), translate: Array(2)},
  objects: Object {counties: Object, states: Object, nation: Object}
  arcs: Array(9869)[],

So, I want to combine us_nation & us_state into one. Please help.

Thank you.

You can use topojson-server:

topojson = require("topojson-client", "topojson-server")
combined = topojson.topology({us_nation, us_state, us_county})

then download the combined object as JSON

1 Like

Thank you, so much for the reply and answer.
It worked.

1 Like