shptree(1)

πŸ’– shptree β€” the glow-up your Shape files deserve πŸ’–

okay bestie, settle in, because this is the shptree(1) manual page and honestly? it's giving main character energy for your spatial data. no cap.


✨ NAME ✨

shptree β€” creates a quadtree-based spatial index for a Shape data set πŸ¦‹


🌸 SYNOPSIS 🌸

shptree [ shpfile [depth] [index_format] | -v]

πŸŽ€ DESCRIPTION πŸŽ€

so what does shptree actually do? it creates a quadtree-based spatial index for a Shape data set. that's the whole vibe. πŸ’…

the default tree depth gets calculated so that each tree node (aka each quadtree cell) holds 8 shapes. but listen β€” do not use the default with point files, okay? a value between 6 and 10 seems to work ok. your millage may vary and you'll need to do some experimenting. πŸ™ˆ

this utility is an absolute must for any MapServer application that uses Shape data sets. shptree creates a spatial index of your Shape data set using a quadtree method, which literally means MapServer will use this index to quickly find the appropriate shapes to draw. iconic behavior, truly. ✨

it creates a file of the same name as your Shape data set, with a .qix file extension. the quadtree method breaks the file into 4 quadrants, recursively, until only a few shapes are contained in each quadrant. and that minimum number? yeah, you can set it with the depth parameter of the command. 🫢


πŸ‘‘ OPTIONS πŸ‘‘

  • shpfile β€” the name of the .shp file to index. that's your girl right there.
  • depth β€” (Optional) the maximum depth of the index to create. default is 0, meaning that shptree will calculate a reasonable default depth for you. lowkey magical.
  • index_format β€” (Optional) one of:
    • NL β€” LSB byte order, using new index format 🌈
    • NM β€” MSB byte order, using new index format 🌈

the following old format options are deprecated πŸ’€ (like, retired, do not use, we moved on):

  • N β€” Native byte order
  • L β€” LSB (intel) byte order
  • M β€” MSB byte order

the default index_format on this system is: NL

  • -v β€” display mapserver version and build options. a little info dump, as a treat. πŸ’œ

🧚 NOTES 🧚

Shape data sets are native to MapServer, and therefore do not require the .shp extension in the DATA path of the LAYER. in fact β€” and this is the important part, bestie, so pay attention β€” in order for MapServer to use the .qix extension you MUST NOT specify the extension. for example:

LAYER
  ...
  DATA "us_states"    #MapServer will search for us_states.qix and will use it
  ...
END

LAYER
  ...
  DATA "us_states.shp" #MapServer will search for us_states.shp.qix and won't find it
  ...
END
Note: as of MapServer 5.2 the qix will be used even when the .shp extension is specified. glow-up era. πŸ‘‘

πŸ”₯ EXAMPLE πŸ”₯

shptree us_states.shp
  creating index of new  LSB format

Result:

  • A file named us_states.qix is created in the same location.
  • (note that you can use the shptreevis(1) utility to view the actual quadtree quadrants that are used by MapServer in this qix file) β€” go peek, it's cute. πŸ‘€

πŸ’œ SEE ALSO πŸ’œ

the shptree wiki page at https://github.com/mapserver/mapserver/wiki/ShpTree may also contain information on this utility. iykyk. πŸ¦‹


and that's the whole page, bestie β€” this one landed on 22 August 2026, part of the shptree(1) family, and honestly? she ate. slay, shptree(1), periodt. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from