Sections Tiles

Vector tiles for PLSS section boundaries and labels. Sections are one-mile-square subdivisions of townships, forming the fundamental unit of the Public Land Survey System.

Endpoint

GEThttps://api.landmapmagic.com/v1/tiles/sections/{z}/{x}/{y}.mvt

Returns a Mapbox Vector Tile containing section polygon geometries and label points. Zoom range: 8 – 16.

URL Parameters

Parameters

NameTypeDescription
z*numberZoom level (8-16).
x*numberTile X coordinate.
y*numberTile Y coordinate.
key*stringYour API key.

Source Layers

Source Layers

sectionsSection polygon boundaries.z8-16
sections_labelsSection label points (centroids).z8-16

Attributes

Available Attributes

AttributeTypeDescription
idnumberUnique internal feature identifier.
section_idstringUnique section identifier combining township and section info.
section_numberstringSection number within the township (1-36).
section_labelstringDisplay label for the section (e.g. "Sec 14").
plss_idstringFull PLSS identifier (e.g. "IA090830N0240W0SN140").
display_namestringHuman-readable display name including township context.
typestringFeature type classification (e.g. "section").
feature_idstringBLM (Bureau of Land Management) feature identifier.

Code Examples

curl
curl "https://api.landmapmagic.com/v1/tiles/sections/12/843/1522.mvt?key=YOUR_API_KEY" \
  --output tile.mvt
JavaScript
const response = await fetch(
  "https://api.landmapmagic.com/v1/tiles/sections/12/843/1522.mvt?key=YOUR_API_KEY"
);
const data = await response.arrayBuffer();
console.log("Tile size:", data.byteLength, "bytes");
Python
import requests

response = requests.get(
    "https://api.landmapmagic.com/v1/tiles/sections/12/843/1522.mvt",
    params={"key": "YOUR_API_KEY"}
)
print(f"Status: {response.status_code}, Size: {len(response.content)} bytes")

Response

Response Headers

HTTP/1.1 200 OK
Content-Type: application/vnd.mapbox-vector-tile
Content-Encoding: gzip
Cache-Control: public, max-age=86400

The response body is a binary MVT protobuf. Empty tiles return HTTP 204 with no body.

Styles

Fetch a renderer-ready style for the Sections layer from the unified /v1/styles endpoint. The response includes sources, layers, attribution, zoom ranges, and label deduplication baked in. Use the landmapmagic npm package for one-line install per target, or call the API directly.

MapLibre / Mapbox

Identical payload either way — Mapbox GL JS consumes a MapLibre Style Spec v8 doc as-is. Pick the keyword that reads best in your codebase.

URL (maplibre)
GET https://api.landmapmagic.com/v1/styles?target=maplibre&layers=sections&key=YOUR_API_KEY
URL (mapbox)
GET https://api.landmapmagic.com/v1/styles?target=mapbox&layers=sections&key=YOUR_API_KEY
JavaScript
const style = await fetch(
  'https://api.landmapmagic.com/v1/styles?' +
    new URLSearchParams({
      key: 'YOUR_API_KEY',
      target: 'maplibre', // or 'mapbox' — same response
      layers: 'sections',
    })
).then((r) => r.json());

map.setStyle(style);

Leaflet

URL
GET https://api.landmapmagic.com/v1/styles?target=leaflet&layers=sections&key=YOUR_API_KEY
JavaScript
import { mountLeafletLandMap } from 'landmapmagic/leaflet';

await mountLeafletLandMap({
  apiKey: 'YOUR_API_KEY',
  map,
  layers: ['sections'],
});

Google + deck.gl

URL
GET https://api.landmapmagic.com/v1/styles?target=google&layers=sections&key=YOUR_API_KEY
JavaScript
import { mountGoogleLandMap } from 'landmapmagic/google';

await mountGoogleLandMap({
  apiKey: 'YOUR_API_KEY',
  map,
  overlay,
  layers: ['sections'],
});
Section data is sourced from the BLM National PLSS dataset. Each township is subdivided into 36 sections numbered in a serpentine pattern. Sections cover the 30 western and midwestern PLSS states. Non-PLSS states (primarily in the original 13 colonies and Texas) are not included in this layer.