[{"data":1,"prerenderedAt":2681},["ShallowReactive",2],{"i-custom:social-instagram":3,"i-custom:social-tiktok":8,"i-custom:social-linkedin":10,"\u002Fdocs\u002Fexport-api":12,"docs-navigation":2656,"\u002Fdocs\u002Fexport-api-surround":2676},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,33,false,"\u003Cg fill=\"none\">\u003Cg id=\"Inst\">\n\u003Cpath id=\"Vector\" d=\"M22.519 3.0918H10.519C8.66314 3.09378 6.88381 3.83192 5.57149 5.14424C4.25916 6.45657 3.52103 8.23589 3.51904 10.0918V22.0918C3.52103 23.9477 4.25916 25.727 5.57149 27.0394C6.88381 28.3517 8.66314 29.0898 10.519 29.0918H22.519C24.3749 29.0898 26.1543 28.3517 27.4666 27.0394C28.7789 25.727 29.5171 23.9477 29.519 22.0918V10.0918C29.5171 8.23589 28.7789 6.45657 27.4666 5.14424C26.1543 3.83192 24.3749 3.09378 22.519 3.0918ZM16.519 22.0918C15.3324 22.0918 14.1723 21.7399 13.1856 21.0806C12.1989 20.4213 11.4299 19.4843 10.9758 18.3879C10.5216 17.2915 10.4028 16.0851 10.6343 14.9213C10.8658 13.7574 11.4373 12.6883 12.2764 11.8492C13.1155 11.01 14.1846 10.4386 15.3485 10.2071C16.5124 9.97557 17.7188 10.0944 18.8151 10.5485C19.9115 11.0026 20.8486 11.7717 21.5079 12.7584C22.1671 13.7451 22.519 14.9051 22.519 16.0918C22.5174 17.6826 21.8847 19.2078 20.7599 20.3326C19.635 21.4575 18.1098 22.0901 16.519 22.0918ZM24.019 10.0918C23.7224 10.0918 23.4324 10.0038 23.1857 9.839C22.939 9.67418 22.7468 9.43991 22.6332 9.16582C22.5197 8.89173 22.49 8.59013 22.5479 8.29916C22.6057 8.00819 22.7486 7.74092 22.9584 7.53114C23.1682 7.32136 23.4354 7.1785 23.7264 7.12062C24.0174 7.06274 24.319 7.09245 24.5931 7.20598C24.8672 7.31951 25.1014 7.51177 25.2662 7.75844C25.4311 8.00512 25.519 8.29513 25.519 8.5918C25.519 8.98962 25.361 9.37115 25.0797 9.65246C24.7984 9.93376 24.4169 10.0918 24.019 10.0918ZM20.519 16.0918C20.519 16.8829 20.2844 17.6563 19.8449 18.3141C19.4054 18.9719 18.7807 19.4846 18.0498 19.7873C17.3189 20.0901 16.5146 20.1693 15.7387 20.0149C14.9628 19.8606 14.25 19.4796 13.6906 18.9202C13.1312 18.3608 12.7502 17.6481 12.5959 16.8722C12.4416 16.0962 12.5208 15.292 12.8235 14.5611C13.1263 13.8302 13.639 13.2054 14.2968 12.7659C14.9546 12.3264 15.7279 12.0918 16.519 12.0918C17.5799 12.0918 18.5973 12.5132 19.3475 13.2634C20.0976 14.0135 20.519 15.0309 20.519 16.0918Z\" fill=\"currentColor\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cg fill=\"none\">\u003Cg id=\"TikTok\">\n\u003Cpath id=\"Vector\" d=\"M29.519 10.0918V15.0918C29.519 15.357 29.4137 15.6114 29.2262 15.7989C29.0386 15.9864 28.7843 16.0918 28.519 16.0918C26.4301 16.0966 24.3711 15.5944 22.519 14.628V19.5918C22.519 22.1114 21.5182 24.5277 19.7366 26.3093C17.955 28.0909 15.5386 29.0918 13.019 29.0918C10.4995 29.0918 8.08312 28.0909 6.30153 26.3093C4.51993 24.5277 3.51904 22.1114 3.51904 19.5918C3.51904 14.9793 6.88279 10.9018 11.344 10.1068C11.488 10.0812 11.6357 10.0875 11.777 10.1252C11.9182 10.1629 12.0494 10.2311 12.1615 10.325C12.2735 10.4189 12.3636 10.5363 12.4253 10.6687C12.4871 10.8012 12.5191 10.9456 12.519 11.0918V16.428C12.5191 16.6173 12.4655 16.8027 12.3643 16.9627C12.2632 17.1227 12.1188 17.2507 11.9478 17.3318C11.5436 17.5235 11.1982 17.8201 10.9477 18.1908C10.6972 18.5614 10.5508 18.9925 10.5236 19.439C10.4965 19.8856 10.5897 20.3312 10.7935 20.7294C10.9972 21.1277 11.3042 21.464 11.6822 21.7032C12.0602 21.9424 12.4955 22.0758 12.9426 22.0895C13.3898 22.1032 13.8324 21.9966 14.2243 21.7809C14.6163 21.5653 14.9431 21.2484 15.1709 20.8633C15.3986 20.4783 15.5188 20.0392 15.519 19.5918V3.0918C15.519 2.82658 15.6244 2.57223 15.8119 2.38469C15.9995 2.19715 16.2538 2.0918 16.519 2.0918H21.519C21.7843 2.0918 22.0386 2.19715 22.2262 2.38469C22.4137 2.57223 22.519 2.82658 22.519 3.0918C22.5207 4.68259 23.1534 6.20775 24.2782 7.33261C25.4031 8.45747 26.9283 9.09014 28.519 9.0918C28.7843 9.0918 29.0386 9.19715 29.2262 9.38469C29.4137 9.57223 29.519 9.82658 29.519 10.0918Z\" fill=\"currentColor\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cg fill=\"none\">\u003Cg id=\"Linkedin\">\n\u003Cpath id=\"Vector\" d=\"M27.519 2.95508H5.51904C4.98861 2.95508 4.4799 3.16579 4.10483 3.54086C3.72976 3.91594 3.51904 4.42465 3.51904 4.95508V26.9551C3.51904 27.4855 3.72976 27.9942 4.10483 28.3693C4.4799 28.7444 4.98861 28.9551 5.51904 28.9551H27.519C28.0495 28.9551 28.5582 28.7444 28.9333 28.3693C29.3083 27.9942 29.519 27.4855 29.519 26.9551V4.95508C29.519 4.42465 29.3083 3.91594 28.9333 3.54086C28.5582 3.16579 28.0495 2.95508 27.519 2.95508ZM12.519 21.9551C12.519 22.2203 12.4137 22.4746 12.2261 22.6622C12.0386 22.8497 11.7843 22.9551 11.519 22.9551C11.2538 22.9551 10.9995 22.8497 10.8119 22.6622C10.6244 22.4746 10.519 22.2203 10.519 21.9551V13.9551C10.519 13.6899 10.6244 13.4355 10.8119 13.248C10.9995 13.0604 11.2538 12.9551 11.519 12.9551C11.7843 12.9551 12.0386 13.0604 12.2261 13.248C12.4137 13.4355 12.519 13.6899 12.519 13.9551V21.9551ZM11.519 11.9551C11.2224 11.9551 10.9324 11.8671 10.6857 11.7023C10.439 11.5375 10.2468 11.3032 10.1332 11.0291C10.0197 10.755 9.98999 10.4534 10.0479 10.1624C10.1057 9.87147 10.2486 9.6042 10.4584 9.39442C10.6682 9.18464 10.9354 9.04178 11.2264 8.9839C11.5174 8.92602 11.819 8.95573 12.0931 9.06926C12.3672 9.18279 12.6014 9.37505 12.7662 9.62172C12.9311 9.8684 13.019 10.1584 13.019 10.4551C13.019 10.8529 12.861 11.2344 12.5797 11.5157C12.2984 11.797 11.9169 11.9551 11.519 11.9551ZM23.519 21.9551C23.519 22.2203 23.4137 22.4746 23.2262 22.6622C23.0386 22.8497 22.7843 22.9551 22.519 22.9551C22.2538 22.9551 21.9995 22.8497 21.8119 22.6622C21.6244 22.4746 21.519 22.2203 21.519 21.9551V17.4551C21.519 16.792 21.2557 16.1562 20.7868 15.6873C20.318 15.2185 19.6821 14.9551 19.019 14.9551C18.356 14.9551 17.7201 15.2185 17.2513 15.6873C16.7824 16.1562 16.519 16.792 16.519 17.4551V21.9551C16.519 22.2203 16.4137 22.4746 16.2261 22.6622C16.0386 22.8497 15.7843 22.9551 15.519 22.9551C15.2538 22.9551 14.9995 22.8497 14.8119 22.6622C14.6244 22.4746 14.519 22.2203 14.519 21.9551V13.9551C14.5203 13.7101 14.6114 13.4742 14.7751 13.2919C14.9387 13.1097 15.1636 12.9939 15.407 12.9664C15.6504 12.939 15.8954 13.0019 16.0956 13.1431C16.2957 13.2843 16.4371 13.4941 16.4928 13.7326C17.1693 13.2737 17.958 13.0077 18.7742 12.9632C19.5905 12.9188 20.4034 13.0975 21.1257 13.4802C21.8481 13.8628 22.4525 14.4351 22.8742 15.1354C23.2958 15.8357 23.5188 16.6376 23.519 17.4551V21.9551Z\" fill=\"currentColor\"\u002F>\n\u003C\u002Fg>\u003C\u002Fg>",{"id":13,"title":14,"body":15,"description":2648,"extension":2649,"meta":2650,"navigation":2651,"path":2652,"seo":2653,"stem":2654,"__hash__":2655},"docs\u002Fdocs\u002F3.export-api.md","Export API",{"type":16,"value":17,"toc":2636},"minimark",[18,34,39,42,78,95,99,102,107,115,118,404,478,482,488,931,938,1157,1161,1164,2259,2262,2265,2406,2428,2432,2519,2523,2526,2532,2555,2558,2568,2572,2632],[19,20,21,22,26,27,33],"p",{},"Host: ",[23,24,25],"code",{},"https:\u002F\u002Fdata.topoexport.com",". The interactive reference of every endpoint and schema is served at the same address: ",[28,29,32],"a",{"href":25,"rel":30},[31],"nofollow","data.topoexport.com",".",[35,36,38],"h2",{"id":37},"authentication","Authentication",[19,40,41],{},"Send your secret key as a bearer token, from your server only:",[43,44,49],"pre",{"className":45,"code":46,"language":47,"meta":48,"style":48},"language-bash shiki shiki-themes github-light","curl -H \"Authorization: Bearer $TOPOEXPORT_SECRET_KEY\" \"https:\u002F\u002Fdata.topoexport.com\u002Fusage\"\n","bash","",[23,50,51],{"__ignoreMap":48},[52,53,56,60,64,68,72,75],"span",{"class":54,"line":55},"line",1,[52,57,59],{"class":58},"s7eDp","curl",[52,61,63],{"class":62},"sYu0t"," -H",[52,65,67],{"class":66},"sYBdl"," \"Authorization: Bearer ",[52,69,71],{"class":70},"sgsFI","$TOPOEXPORT_SECRET_KEY",[52,73,74],{"class":66},"\"",[52,76,77],{"class":66}," \"https:\u002F\u002Fdata.topoexport.com\u002Fusage\"\n",[19,79,80,81,84,85,88,89,94],{},"The secret key is in the ",[82,83,14],"strong",{}," tab of ",[82,86,87],{},"Services & API"," in the ",[28,90,93],{"href":91,"rel":92},"https:\u002F\u002Fapp.topoexport.com\u002Fservices",[31],"TopoExport app",", where you can also regenerate it.",[35,96,98],{"id":97},"workflow","Workflow",[19,100,101],{},"An export takes two requests: find the datasets that cover a place, then download one of them over a bounding box.",[103,104,106],"h3",{"id":105},"_1-find-datasets-for-a-location","1. Find datasets for a location",[43,108,113],{"className":109,"code":111,"language":112,"meta":48},[110],"language-text","GET \u002Flookup?lat={lat}&lon={lon}\nGET \u002Flookup?bbox={min_lon},{min_lat},{max_lon},{max_lat}\n","text",[23,114,111],{"__ignoreMap":48},[19,116,117],{},"The response gives the deepest region containing the point (or the center of the bounding box) and the best datasets available there, one per type. Abridged:",[43,119,123],{"className":120,"code":121,"language":122,"meta":48,"style":48},"language-json shiki shiki-themes github-light","{\n  \"region\": {\n    \"id\": \"…\",\n    \"isoCode\": \"FR-METRO\",\n    \"name\": \"Metropolitan France\",\n    \"localName\": \"France métropolitaine\"\n  },\n  \"datasets\": [\n    {\n      \"id\": \"…\",\n      \"type\": \"BUILDINGS_3D\",\n      \"minYear\": 2024,\n      \"maxYear\": 2025,\n      \"precision\": 2,\n      \"srids\": [2154],\n      \"lookupSrid\": 2154,\n      \"regionIsoCode\": \"FR-METRO\",\n      \"product\": {\n        \"name\": \"BD TOPO\",\n        \"licence\": \"CC BY 4.0\",\n        \"publisher\": { \"name\": \"Institut national de l'information géographique et forestière\", \"shortName\": \"IGN\" }\n      }\n    }\n  ]\n}\n","json",[23,124,125,130,139,154,167,180,191,197,206,212,224,237,250,263,276,291,303,315,323,336,349,380,386,392,398],{"__ignoreMap":48},[52,126,127],{"class":54,"line":55},[52,128,129],{"class":70},"{\n",[52,131,133,136],{"class":54,"line":132},2,[52,134,135],{"class":62},"  \"region\"",[52,137,138],{"class":70},": {\n",[52,140,142,145,148,151],{"class":54,"line":141},3,[52,143,144],{"class":62},"    \"id\"",[52,146,147],{"class":70},": ",[52,149,150],{"class":66},"\"…\"",[52,152,153],{"class":70},",\n",[52,155,157,160,162,165],{"class":54,"line":156},4,[52,158,159],{"class":62},"    \"isoCode\"",[52,161,147],{"class":70},[52,163,164],{"class":66},"\"FR-METRO\"",[52,166,153],{"class":70},[52,168,170,173,175,178],{"class":54,"line":169},5,[52,171,172],{"class":62},"    \"name\"",[52,174,147],{"class":70},[52,176,177],{"class":66},"\"Metropolitan France\"",[52,179,153],{"class":70},[52,181,183,186,188],{"class":54,"line":182},6,[52,184,185],{"class":62},"    \"localName\"",[52,187,147],{"class":70},[52,189,190],{"class":66},"\"France métropolitaine\"\n",[52,192,194],{"class":54,"line":193},7,[52,195,196],{"class":70},"  },\n",[52,198,200,203],{"class":54,"line":199},8,[52,201,202],{"class":62},"  \"datasets\"",[52,204,205],{"class":70},": [\n",[52,207,209],{"class":54,"line":208},9,[52,210,211],{"class":70},"    {\n",[52,213,215,218,220,222],{"class":54,"line":214},10,[52,216,217],{"class":62},"      \"id\"",[52,219,147],{"class":70},[52,221,150],{"class":66},[52,223,153],{"class":70},[52,225,227,230,232,235],{"class":54,"line":226},11,[52,228,229],{"class":62},"      \"type\"",[52,231,147],{"class":70},[52,233,234],{"class":66},"\"BUILDINGS_3D\"",[52,236,153],{"class":70},[52,238,240,243,245,248],{"class":54,"line":239},12,[52,241,242],{"class":62},"      \"minYear\"",[52,244,147],{"class":70},[52,246,247],{"class":62},"2024",[52,249,153],{"class":70},[52,251,253,256,258,261],{"class":54,"line":252},13,[52,254,255],{"class":62},"      \"maxYear\"",[52,257,147],{"class":70},[52,259,260],{"class":62},"2025",[52,262,153],{"class":70},[52,264,266,269,271,274],{"class":54,"line":265},14,[52,267,268],{"class":62},"      \"precision\"",[52,270,147],{"class":70},[52,272,273],{"class":62},"2",[52,275,153],{"class":70},[52,277,279,282,285,288],{"class":54,"line":278},15,[52,280,281],{"class":62},"      \"srids\"",[52,283,284],{"class":70},": [",[52,286,287],{"class":62},"2154",[52,289,290],{"class":70},"],\n",[52,292,294,297,299,301],{"class":54,"line":293},16,[52,295,296],{"class":62},"      \"lookupSrid\"",[52,298,147],{"class":70},[52,300,287],{"class":62},[52,302,153],{"class":70},[52,304,306,309,311,313],{"class":54,"line":305},17,[52,307,308],{"class":62},"      \"regionIsoCode\"",[52,310,147],{"class":70},[52,312,164],{"class":66},[52,314,153],{"class":70},[52,316,318,321],{"class":54,"line":317},18,[52,319,320],{"class":62},"      \"product\"",[52,322,138],{"class":70},[52,324,326,329,331,334],{"class":54,"line":325},19,[52,327,328],{"class":62},"        \"name\"",[52,330,147],{"class":70},[52,332,333],{"class":66},"\"BD TOPO\"",[52,335,153],{"class":70},[52,337,339,342,344,347],{"class":54,"line":338},20,[52,340,341],{"class":62},"        \"licence\"",[52,343,147],{"class":70},[52,345,346],{"class":66},"\"CC BY 4.0\"",[52,348,153],{"class":70},[52,350,352,355,358,361,363,366,369,372,374,377],{"class":54,"line":351},21,[52,353,354],{"class":62},"        \"publisher\"",[52,356,357],{"class":70},": { ",[52,359,360],{"class":62},"\"name\"",[52,362,147],{"class":70},[52,364,365],{"class":66},"\"Institut national de l'information géographique et forestière\"",[52,367,368],{"class":70},", ",[52,370,371],{"class":62},"\"shortName\"",[52,373,147],{"class":70},[52,375,376],{"class":66},"\"IGN\"",[52,378,379],{"class":70}," }\n",[52,381,383],{"class":54,"line":382},22,[52,384,385],{"class":70},"      }\n",[52,387,389],{"class":54,"line":388},23,[52,390,391],{"class":70},"    }\n",[52,393,395],{"class":54,"line":394},24,[52,396,397],{"class":70},"  ]\n",[52,399,401],{"class":54,"line":400},25,[52,402,403],{"class":70},"}\n",[405,406,407,451,462,472],"ul",{},[408,409,410,147,413,368,416,368,419,368,422,368,425,368,428,368,431,368,434,368,437,368,440,368,443,446,447,450],"li",{},[23,411,412],{},"type",[23,414,415],{},"BUILDINGS_2D",[23,417,418],{},"BUILDINGS_3D",[23,420,421],{},"PARCELS",[23,423,424],{},"ROADS",[23,426,427],{},"RAILWAYS",[23,429,430],{},"WATERWAYS",[23,432,433],{},"GREEN_AREAS",[23,435,436],{},"TREES",[23,438,439],{},"HEDGES",[23,441,442],{},"CANOPY",[23,444,445],{},"RASTER_DTM"," (terrain), ",[23,448,449],{},"RASTER_DSM"," (surface), among others.",[408,452,453,456,457,459,460,33],{},[23,454,455],{},"precision",": the level of detail for ",[23,458,418],{},", the grid resolution for ",[23,461,445],{},[408,463,464,467,468,471],{},[23,465,466],{},"lookupSrid",": the coordinate reference system (EPSG code) best suited to this location. Pass it as ",[23,469,470],{},"targetSrid"," in step 2.",[408,473,474,477],{},[23,475,476],{},"product",": the source of the data, its publisher and its licence. Credit them as the licence requires.",[103,479,481],{"id":480},"_2-download-features","2. Download features",[43,483,486],{"className":484,"code":485,"language":112,"meta":48},[110],"GET \u002Fdatasets\u002F{id}\u002Ffeatures?bbox={min_lon},{min_lat},{max_lon},{max_lat}&targetSrid={epsg}&format={format}\n",[23,487,485],{"__ignoreMap":48},[489,490,491,532,756],"code-group",{},[43,492,494],{"className":45,"code":493,"filename":59,"language":47,"meta":48,"style":48},"curl -H \"Authorization: Bearer $TOPOEXPORT_SECRET_KEY\" \\\n  -o buildings.geojson \\\n  \"https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F$DATASET_ID\u002Ffeatures?bbox=2.341735,48.852743,2.351291,48.857090&targetSrid=2154&format=geojson\"\n",[23,495,496,511,521],{"__ignoreMap":48},[52,497,498,500,502,504,506,508],{"class":54,"line":55},[52,499,59],{"class":58},[52,501,63],{"class":62},[52,503,67],{"class":66},[52,505,71],{"class":70},[52,507,74],{"class":66},[52,509,510],{"class":62}," \\\n",[52,512,513,516,519],{"class":54,"line":132},[52,514,515],{"class":62},"  -o",[52,517,518],{"class":66}," buildings.geojson",[52,520,510],{"class":62},[52,522,523,526,529],{"class":54,"line":141},[52,524,525],{"class":66},"  \"https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F",[52,527,528],{"class":70},"$DATASET_ID",[52,530,531],{"class":66},"\u002Ffeatures?bbox=2.341735,48.852743,2.351291,48.857090&targetSrid=2154&format=geojson\"\n",[43,533,538],{"className":534,"code":535,"filename":536,"language":537,"meta":48,"style":48},"language-js shiki shiki-themes github-light","import { writeFile } from \"node:fs\u002Fpromises\";\n\nconst params = new URLSearchParams({\n  bbox: \"2.341735,48.852743,2.351291,48.857090\",\n  targetSrid: \"2154\",\n  format: \"glb\",\n});\nconst response = await fetch(`https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F${datasetId}\u002Ffeatures?${params}`, {\n  headers: { Authorization: `Bearer ${process.env.TOPOEXPORT_SECRET_KEY}` },\n});\nif (!response.ok) throw new Error(`Export failed: HTTP ${response.status}`);\nawait writeFile(\"buildings.glb\", Buffer.from(await response.arrayBuffer()));\n","Node.js","js",[23,539,540,558,564,584,594,604,614,619,655,681,685,725],{"__ignoreMap":48},[52,541,542,546,549,552,555],{"class":54,"line":55},[52,543,545],{"class":544},"sD7c4","import",[52,547,548],{"class":70}," { writeFile } ",[52,550,551],{"class":544},"from",[52,553,554],{"class":66}," \"node:fs\u002Fpromises\"",[52,556,557],{"class":70},";\n",[52,559,560],{"class":54,"line":132},[52,561,563],{"emptyLinePlaceholder":562},true,"\n",[52,565,566,569,572,575,578,581],{"class":54,"line":141},[52,567,568],{"class":544},"const",[52,570,571],{"class":62}," params",[52,573,574],{"class":544}," =",[52,576,577],{"class":544}," new",[52,579,580],{"class":58}," URLSearchParams",[52,582,583],{"class":70},"({\n",[52,585,586,589,592],{"class":54,"line":156},[52,587,588],{"class":70},"  bbox: ",[52,590,591],{"class":66},"\"2.341735,48.852743,2.351291,48.857090\"",[52,593,153],{"class":70},[52,595,596,599,602],{"class":54,"line":169},[52,597,598],{"class":70},"  targetSrid: ",[52,600,601],{"class":66},"\"2154\"",[52,603,153],{"class":70},[52,605,606,609,612],{"class":54,"line":182},[52,607,608],{"class":70},"  format: ",[52,610,611],{"class":66},"\"glb\"",[52,613,153],{"class":70},[52,615,616],{"class":54,"line":193},[52,617,618],{"class":70},"});\n",[52,620,621,623,626,628,631,634,637,640,643,646,649,652],{"class":54,"line":199},[52,622,568],{"class":544},[52,624,625],{"class":62}," response",[52,627,574],{"class":544},[52,629,630],{"class":544}," await",[52,632,633],{"class":58}," fetch",[52,635,636],{"class":70},"(",[52,638,639],{"class":66},"`https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F${",[52,641,642],{"class":70},"datasetId",[52,644,645],{"class":66},"}\u002Ffeatures?${",[52,647,648],{"class":70},"params",[52,650,651],{"class":66},"}`",[52,653,654],{"class":70},", {\n",[52,656,657,660,663,666,668,671,673,676,678],{"class":54,"line":208},[52,658,659],{"class":70},"  headers: { Authorization: ",[52,661,662],{"class":66},"`Bearer ${",[52,664,665],{"class":70},"process",[52,667,33],{"class":66},[52,669,670],{"class":70},"env",[52,672,33],{"class":66},[52,674,675],{"class":62},"TOPOEXPORT_SECRET_KEY",[52,677,651],{"class":66},[52,679,680],{"class":70}," },\n",[52,682,683],{"class":54,"line":214},[52,684,618],{"class":70},[52,686,687,690,693,696,699,702,704,707,709,712,715,717,720,722],{"class":54,"line":226},[52,688,689],{"class":544},"if",[52,691,692],{"class":70}," (",[52,694,695],{"class":544},"!",[52,697,698],{"class":70},"response.ok) ",[52,700,701],{"class":544},"throw",[52,703,577],{"class":544},[52,705,706],{"class":58}," Error",[52,708,636],{"class":70},[52,710,711],{"class":66},"`Export failed: HTTP ${",[52,713,714],{"class":70},"response",[52,716,33],{"class":66},[52,718,719],{"class":70},"status",[52,721,651],{"class":66},[52,723,724],{"class":70},");\n",[52,726,727,730,733,735,738,741,743,745,747,750,753],{"class":54,"line":239},[52,728,729],{"class":544},"await",[52,731,732],{"class":58}," writeFile",[52,734,636],{"class":70},[52,736,737],{"class":66},"\"buildings.glb\"",[52,739,740],{"class":70},", Buffer.",[52,742,551],{"class":58},[52,744,636],{"class":70},[52,746,729],{"class":544},[52,748,749],{"class":70}," response.",[52,751,752],{"class":58},"arrayBuffer",[52,754,755],{"class":70},"()));\n",[43,757,762],{"className":758,"code":759,"filename":760,"language":761,"meta":48,"style":48},"language-python shiki shiki-themes github-light","import os\nimport requests\n\nresponse = requests.get(\n    f\"https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F{dataset_id}\u002Ffeatures\",\n    params={\"bbox\": \"2.341735,48.852743,2.351291,48.857090\", \"targetSrid\": 2154, \"format\": \"geojson\"},\n    headers={\"Authorization\": f\"Bearer {os.environ['TOPOEXPORT_SECRET_KEY']}\"},\n    timeout=300,\n)\nresponse.raise_for_status()\nopen(\"buildings.geojson\", \"wb\").write(response.content)\n","Python","python",[23,763,764,771,778,782,793,815,854,891,903,908,913],{"__ignoreMap":48},[52,765,766,768],{"class":54,"line":55},[52,767,545],{"class":544},[52,769,770],{"class":70}," os\n",[52,772,773,775],{"class":54,"line":132},[52,774,545],{"class":544},[52,776,777],{"class":70}," requests\n",[52,779,780],{"class":54,"line":141},[52,781,563],{"emptyLinePlaceholder":562},[52,783,784,787,790],{"class":54,"line":156},[52,785,786],{"class":70},"response ",[52,788,789],{"class":544},"=",[52,791,792],{"class":70}," requests.get(\n",[52,794,795,798,801,804,807,810,813],{"class":54,"line":169},[52,796,797],{"class":544},"    f",[52,799,800],{"class":66},"\"https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F",[52,802,803],{"class":62},"{",[52,805,806],{"class":70},"dataset_id",[52,808,809],{"class":62},"}",[52,811,812],{"class":66},"\u002Ffeatures\"",[52,814,153],{"class":70},[52,816,817,821,823,825,828,830,832,834,837,839,841,843,846,848,851],{"class":54,"line":182},[52,818,820],{"class":819},"sqxcx","    params",[52,822,789],{"class":544},[52,824,803],{"class":70},[52,826,827],{"class":66},"\"bbox\"",[52,829,147],{"class":70},[52,831,591],{"class":66},[52,833,368],{"class":70},[52,835,836],{"class":66},"\"targetSrid\"",[52,838,147],{"class":70},[52,840,287],{"class":62},[52,842,368],{"class":70},[52,844,845],{"class":66},"\"format\"",[52,847,147],{"class":70},[52,849,850],{"class":66},"\"geojson\"",[52,852,853],{"class":70},"},\n",[52,855,856,859,861,863,866,868,871,874,876,879,882,885,887,889],{"class":54,"line":193},[52,857,858],{"class":819},"    headers",[52,860,789],{"class":544},[52,862,803],{"class":70},[52,864,865],{"class":66},"\"Authorization\"",[52,867,147],{"class":70},[52,869,870],{"class":544},"f",[52,872,873],{"class":66},"\"Bearer ",[52,875,803],{"class":62},[52,877,878],{"class":70},"os.environ[",[52,880,881],{"class":66},"'TOPOEXPORT_SECRET_KEY'",[52,883,884],{"class":70},"]",[52,886,809],{"class":62},[52,888,74],{"class":66},[52,890,853],{"class":70},[52,892,893,896,898,901],{"class":54,"line":199},[52,894,895],{"class":819},"    timeout",[52,897,789],{"class":544},[52,899,900],{"class":62},"300",[52,902,153],{"class":70},[52,904,905],{"class":54,"line":208},[52,906,907],{"class":70},")\n",[52,909,910],{"class":54,"line":214},[52,911,912],{"class":70},"response.raise_for_status()\n",[52,914,915,918,920,923,925,928],{"class":54,"line":226},[52,916,917],{"class":62},"open",[52,919,636],{"class":70},[52,921,922],{"class":66},"\"buildings.geojson\"",[52,924,368],{"class":70},[52,926,927],{"class":66},"\"wb\"",[52,929,930],{"class":70},").write(response.content)\n",[19,932,933,934,937],{},"The response body is the file itself, with the ",[23,935,936],{},"Content-Type"," of its format.",[939,940,941,957],"table",{},[942,943,944],"thead",{},[945,946,947,951,954],"tr",{},[948,949,950],"th",{},"Parameter",[948,952,953],{},"Required",[948,955,956],{},"Meaning",[958,959,960,982,996,1029,1042,1059,1074,1089,1103,1125,1142],"tbody",{},[945,961,962,968,971],{},[963,964,965],"td",{},[23,966,967],{},"bbox",[963,969,970],{},"yes",[963,972,973,976,977,981],{},[23,974,975],{},"min_lon,min_lat,max_lon,max_lat"," in WGS 84 degrees. At most ",[978,979],"docs-value",{"name":980},"exportMaxBboxKm2"," km² per request",[945,983,984,988,990],{},[963,985,986],{},[23,987,470],{},[963,989,970],{},[963,991,992,993,995],{},"EPSG code of the output coordinates, usually the ",[23,994,466],{}," of step 1",[945,997,998,1003,1005],{},[963,999,1000],{},[23,1001,1002],{},"format",[963,1004,970],{},[963,1006,1007,368,1010,368,1013,368,1016,1019,1020,1023,1024,1028],{},[23,1008,1009],{},"geojson",[23,1011,1012],{},"glb",[23,1014,1015],{},"obj",[23,1017,1018],{},"tiff"," or ",[23,1021,1022],{},"png",", depending on the dataset type (see ",[28,1025,1027],{"href":1026},"#formats","Formats",")",[945,1030,1031,1036,1039],{},[963,1032,1033],{},[23,1034,1035],{},"resolution",[963,1037,1038],{},"no",[963,1040,1041],{},"Grid resolution of raster output, in metres. Defaults to the dataset's resolution",[945,1043,1044,1049,1051],{},[963,1045,1046],{},[23,1047,1048],{},"lod",[963,1050,1038],{},[963,1052,1053,1054,1019,1057],{},"Level of detail of 3D buildings: ",[23,1055,1056],{},"1",[23,1058,273],{},[945,1060,1061,1066,1068],{},[963,1062,1063],{},[23,1064,1065],{},"terrainDatasetId",[963,1067,1038],{},[963,1069,1070,1071,1073],{},"A ",[23,1072,445],{}," dataset id: 3D output is placed on this terrain",[945,1075,1076,1081,1083],{},[963,1077,1078],{},[23,1079,1080],{},"buildingDefaultHeight",[963,1082,1038],{},[963,1084,1085,1086],{},"Height in metres given to buildings without one. Default ",[23,1087,1088],{},"6",[945,1090,1091,1096,1098],{},[963,1092,1093],{},[23,1094,1095],{},"treeDefaultHeight",[963,1097,1038],{},[963,1099,1100,1101],{},"Height in metres given to trees without one. Default ",[23,1102,1088],{},[945,1104,1105,1110,1112],{},[963,1106,1107],{},[23,1108,1109],{},"geolocate",[963,1111,1038],{},[963,1113,1114,1117,1118,1120,1121,1124],{},[23,1115,1116],{},"true"," (default): coordinates in ",[23,1119,470],{},". ",[23,1122,1123],{},"false",": coordinates relative to the south-west corner of the bounding box",[945,1126,1127,1132,1134],{},[963,1128,1129],{},[23,1130,1131],{},"outlines",[963,1133,1038],{},[963,1135,1136,1137,1139,1140],{},"Roads only: ",[23,1138,1116],{}," returns road surfaces instead of centrelines. Default ",[23,1141,1123],{},[945,1143,1144,1149,1151],{},[963,1145,1146],{},[23,1147,1148],{},"stepContour",[963,1150,1038],{},[963,1152,1153,1154,1156],{},"Terrain in ",[23,1155,1012],{}," only: returns contour lines at this interval, in metres",[35,1158,1160],{"id":1159},"complete-example","Complete example",[19,1162,1163],{},"Find the 3D buildings dataset that covers an area, then download it as glTF in the coordinate system suited to that location. A location with no 3D buildings dataset gets a clear message instead of an error.",[489,1165,1166,1372,1834],{},[43,1167,1169],{"className":45,"code":1168,"filename":59,"language":47,"meta":48,"style":48},"BBOX=\"2.341735,48.852743,2.351291,48.857090\"\nAUTH=\"Authorization: Bearer $TOPOEXPORT_SECRET_KEY\"\n\n# 1. datasets covering the bounding box (jq picks the 3D buildings)\nread -r DATASET_ID SRID \u003C \u003C(\n  curl -sf -H \"$AUTH\" \"https:\u002F\u002Fdata.topoexport.com\u002Flookup?bbox=$BBOX\" |\n    jq -r '.datasets[] | select(.type == \"BUILDINGS_3D\") | \"\\(.id) \\(.lookupSrid)\"' | head -n 1\n)\n[ -n \"$DATASET_ID\" ] || { echo \"No 3D buildings dataset here\"; exit 1; }\n\n# 2. features of that dataset over the same bounding box\ncurl -sf -H \"$AUTH\" -o buildings.glb \\\n  \"https:\u002F\u002Fdata.topoexport.com\u002Fdatasets\u002F$DATASET_ID\u002Ffeatures?bbox=$BBOX&targetSrid=$SRID&format=glb&lod=2\"\n",[23,1170,1171,1181,1196,1200,1206,1226,1254,1276,1280,1321,1325,1330,1352],{"__ignoreMap":48},[52,1172,1173,1176,1178],{"class":54,"line":55},[52,1174,1175],{"class":70},"BBOX",[52,1177,789],{"class":544},[52,1179,1180],{"class":66},"\"2.341735,48.852743,2.351291,48.857090\"\n",[52,1182,1183,1186,1188,1191,1193],{"class":54,"line":132},[52,1184,1185],{"class":70},"AUTH",[52,1187,789],{"class":544},[52,1189,1190],{"class":66},"\"Authorization: Bearer ",[52,1192,71],{"class":70},[52,1194,1195],{"class":66},"\"\n",[52,1197,1198],{"class":54,"line":141},[52,1199,563],{"emptyLinePlaceholder":562},[52,1201,1202],{"class":54,"line":156},[52,1203,1205],{"class":1204},"sAwPA","# 1. datasets covering the bounding box (jq picks the 3D buildings)\n",[52,1207,1208,1211,1214,1217,1220,1223],{"class":54,"line":169},[52,1209,1210],{"class":62},"read",[52,1212,1213],{"class":62}," -r",[52,1215,1216],{"class":66}," DATASET_ID",[52,1218,1219],{"class":66}," SRID",[52,1221,1222],{"class":544}," \u003C",[52,1224,1225],{"class":66}," \u003C(\n",[52,1227,1228,1231,1234,1236,1239,1242,1245,1248,1251],{"class":54,"line":182},[52,1229,1230],{"class":58},"  curl",[52,1232,1233],{"class":62}," -sf",[52,1235,63],{"class":62},[52,1237,1238],{"class":66}," \"",[52,1240,1241],{"class":70},"$AUTH",[52,1243,1244],{"class":66},"\" \"https:\u002F\u002Fdata.topoexport.com\u002Flookup?bbox=",[52,1246,1247],{"class":70},"$BBOX",[52,1249,1250],{"class":66},"\" ",[52,1252,1253],{"class":544},"|\n",[52,1255,1256,1259,1261,1264,1267,1270,1273],{"class":54,"line":193},[52,1257,1258],{"class":58},"    jq",[52,1260,1213],{"class":62},[52,1262,1263],{"class":66}," '.datasets[] | select(.type == \"BUILDINGS_3D\") | \"\\(.id) \\(.lookupSrid)\"' ",[52,1265,1266],{"class":544},"|",[52,1268,1269],{"class":58}," head",[52,1271,1272],{"class":62}," -n",[52,1274,1275],{"class":62}," 1\n",[52,1277,1278],{"class":54,"line":199},[52,1279,907],{"class":66},[52,1281,1282,1285,1288,1290,1292,1294,1297,1300,1303,1306,1309,1312,1315,1318],{"class":54,"line":208},[52,1283,1284],{"class":70},"[ ",[52,1286,1287],{"class":544},"-n",[52,1289,1238],{"class":66},[52,1291,528],{"class":70},[52,1293,74],{"class":66},[52,1295,1296],{"class":70}," ] ",[52,1298,1299],{"class":544},"||",[52,1301,1302],{"class":70}," { ",[52,1304,1305],{"class":62},"echo",[52,1307,1308],{"class":66}," \"No 3D buildings dataset here\"",[52,1310,1311],{"class":70},"; ",[52,1313,1314],{"class":62},"exit",[52,1316,1317],{"class":62}," 1",[52,1319,1320],{"class":70},"; }\n",[52,1322,1323],{"class":54,"line":214},[52,1324,563],{"emptyLinePlaceholder":562},[52,1326,1327],{"class":54,"line":226},[52,1328,1329],{"class":1204},"# 2. features of that dataset over the same bounding box\n",[52,1331,1332,1334,1336,1338,1340,1342,1344,1347,1350],{"class":54,"line":239},[52,1333,59],{"class":58},[52,1335,1233],{"class":62},[52,1337,63],{"class":62},[52,1339,1238],{"class":66},[52,1341,1241],{"class":70},[52,1343,74],{"class":66},[52,1345,1346],{"class":62}," -o",[52,1348,1349],{"class":66}," buildings.glb",[52,1351,510],{"class":62},[52,1353,1354,1356,1358,1361,1363,1366,1369],{"class":54,"line":252},[52,1355,525],{"class":66},[52,1357,528],{"class":70},[52,1359,1360],{"class":66},"\u002Ffeatures?bbox=",[52,1362,1247],{"class":70},[52,1364,1365],{"class":66},"&targetSrid=",[52,1367,1368],{"class":70},"$SRID",[52,1370,1371],{"class":66},"&format=glb&lod=2\"\n",[43,1373,1375],{"className":758,"code":1374,"filename":760,"language":761,"meta":48,"style":48},"import os\n\nimport requests\n\nAPI = \"https:\u002F\u002Fdata.topoexport.com\"\nHEADERS = {\"Authorization\": f\"Bearer {os.environ['TOPOEXPORT_SECRET_KEY']}\"}\nBBOX = \"2.341735,48.852743,2.351291,48.857090\"\n\n# 1. datasets covering the bounding box\nlookup = requests.get(f\"{API}\u002Flookup\", params={\"bbox\": BBOX}, headers=HEADERS, timeout=30)\nlookup.raise_for_status()\ndataset = next((d for d in lookup.json()[\"datasets\"] if d[\"type\"] == \"BUILDINGS_3D\"), None)\nif dataset is None:\n    raise SystemExit(\"No 3D buildings dataset here\")\nproduct = dataset[\"product\"]\nprint(f\"{product['name']} by {product['publisher']['name']}, licence {product['licence']}\")\n\n# 2. features of that dataset over the same bounding box\nexport = requests.get(\n    f\"{API}\u002Fdatasets\u002F{dataset['id']}\u002Ffeatures\",\n    params={\"bbox\": BBOX, \"targetSrid\": dataset[\"lookupSrid\"], \"format\": \"glb\", \"lod\": 2},\n    headers=HEADERS,\n    timeout=300,\n)\nexport.raise_for_status()\nwith open(\"buildings.glb\", \"wb\") as file:\n    file.write(export.content)\n",[23,1376,1377,1383,1387,1393,1397,1407,1439,1448,1452,1457,1513,1518,1573,1589,1604,1620,1680,1684,1688,1697,1724,1768,1778,1788,1792,1797,1825],{"__ignoreMap":48},[52,1378,1379,1381],{"class":54,"line":55},[52,1380,545],{"class":544},[52,1382,770],{"class":70},[52,1384,1385],{"class":54,"line":132},[52,1386,563],{"emptyLinePlaceholder":562},[52,1388,1389,1391],{"class":54,"line":141},[52,1390,545],{"class":544},[52,1392,777],{"class":70},[52,1394,1395],{"class":54,"line":156},[52,1396,563],{"emptyLinePlaceholder":562},[52,1398,1399,1402,1404],{"class":54,"line":169},[52,1400,1401],{"class":62},"API",[52,1403,574],{"class":544},[52,1405,1406],{"class":66}," \"https:\u002F\u002Fdata.topoexport.com\"\n",[52,1408,1409,1412,1414,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437],{"class":54,"line":182},[52,1410,1411],{"class":62},"HEADERS",[52,1413,574],{"class":544},[52,1415,1416],{"class":70}," {",[52,1418,865],{"class":66},[52,1420,147],{"class":70},[52,1422,870],{"class":544},[52,1424,873],{"class":66},[52,1426,803],{"class":62},[52,1428,878],{"class":70},[52,1430,881],{"class":66},[52,1432,884],{"class":70},[52,1434,809],{"class":62},[52,1436,74],{"class":66},[52,1438,403],{"class":70},[52,1440,1441,1443,1445],{"class":54,"line":193},[52,1442,1175],{"class":62},[52,1444,574],{"class":544},[52,1446,1447],{"class":66}," \"2.341735,48.852743,2.351291,48.857090\"\n",[52,1449,1450],{"class":54,"line":199},[52,1451,563],{"emptyLinePlaceholder":562},[52,1453,1454],{"class":54,"line":208},[52,1455,1456],{"class":1204},"# 1. datasets covering the bounding box\n",[52,1458,1459,1462,1464,1467,1469,1471,1474,1477,1479,1481,1483,1485,1487,1489,1491,1494,1497,1499,1501,1503,1506,1508,1511],{"class":54,"line":214},[52,1460,1461],{"class":70},"lookup ",[52,1463,789],{"class":544},[52,1465,1466],{"class":70}," requests.get(",[52,1468,870],{"class":544},[52,1470,74],{"class":66},[52,1472,1473],{"class":62},"{API}",[52,1475,1476],{"class":66},"\u002Flookup\"",[52,1478,368],{"class":70},[52,1480,648],{"class":819},[52,1482,789],{"class":544},[52,1484,803],{"class":70},[52,1486,827],{"class":66},[52,1488,147],{"class":70},[52,1490,1175],{"class":62},[52,1492,1493],{"class":70},"}, ",[52,1495,1496],{"class":819},"headers",[52,1498,789],{"class":544},[52,1500,1411],{"class":62},[52,1502,368],{"class":70},[52,1504,1505],{"class":819},"timeout",[52,1507,789],{"class":544},[52,1509,1510],{"class":62},"30",[52,1512,907],{"class":70},[52,1514,1515],{"class":54,"line":226},[52,1516,1517],{"class":70},"lookup.raise_for_status()\n",[52,1519,1520,1523,1525,1528,1531,1534,1537,1540,1543,1546,1549,1551,1554,1557,1559,1562,1565,1568,1571],{"class":54,"line":239},[52,1521,1522],{"class":70},"dataset ",[52,1524,789],{"class":544},[52,1526,1527],{"class":62}," next",[52,1529,1530],{"class":70},"((d ",[52,1532,1533],{"class":544},"for",[52,1535,1536],{"class":70}," d ",[52,1538,1539],{"class":544},"in",[52,1541,1542],{"class":70}," lookup.json()[",[52,1544,1545],{"class":66},"\"datasets\"",[52,1547,1548],{"class":70},"] ",[52,1550,689],{"class":544},[52,1552,1553],{"class":70}," d[",[52,1555,1556],{"class":66},"\"type\"",[52,1558,1548],{"class":70},[52,1560,1561],{"class":544},"==",[52,1563,1564],{"class":66}," \"BUILDINGS_3D\"",[52,1566,1567],{"class":70},"), ",[52,1569,1570],{"class":62},"None",[52,1572,907],{"class":70},[52,1574,1575,1577,1580,1583,1586],{"class":54,"line":252},[52,1576,689],{"class":544},[52,1578,1579],{"class":70}," dataset ",[52,1581,1582],{"class":544},"is",[52,1584,1585],{"class":62}," None",[52,1587,1588],{"class":70},":\n",[52,1590,1591,1594,1597,1599,1602],{"class":54,"line":265},[52,1592,1593],{"class":544},"    raise",[52,1595,1596],{"class":62}," SystemExit",[52,1598,636],{"class":70},[52,1600,1601],{"class":66},"\"No 3D buildings dataset here\"",[52,1603,907],{"class":70},[52,1605,1606,1609,1611,1614,1617],{"class":54,"line":278},[52,1607,1608],{"class":70},"product ",[52,1610,789],{"class":544},[52,1612,1613],{"class":70}," dataset[",[52,1615,1616],{"class":66},"\"product\"",[52,1618,1619],{"class":70},"]\n",[52,1621,1622,1625,1627,1629,1631,1633,1636,1639,1641,1643,1646,1648,1650,1653,1656,1658,1660,1662,1665,1667,1669,1672,1674,1676,1678],{"class":54,"line":293},[52,1623,1624],{"class":62},"print",[52,1626,636],{"class":70},[52,1628,870],{"class":544},[52,1630,74],{"class":66},[52,1632,803],{"class":62},[52,1634,1635],{"class":70},"product[",[52,1637,1638],{"class":66},"'name'",[52,1640,884],{"class":70},[52,1642,809],{"class":62},[52,1644,1645],{"class":66}," by ",[52,1647,803],{"class":62},[52,1649,1635],{"class":70},[52,1651,1652],{"class":66},"'publisher'",[52,1654,1655],{"class":70},"][",[52,1657,1638],{"class":66},[52,1659,884],{"class":70},[52,1661,809],{"class":62},[52,1663,1664],{"class":66},", licence ",[52,1666,803],{"class":62},[52,1668,1635],{"class":70},[52,1670,1671],{"class":66},"'licence'",[52,1673,884],{"class":70},[52,1675,809],{"class":62},[52,1677,74],{"class":66},[52,1679,907],{"class":70},[52,1681,1682],{"class":54,"line":305},[52,1683,563],{"emptyLinePlaceholder":562},[52,1685,1686],{"class":54,"line":317},[52,1687,1329],{"class":1204},[52,1689,1690,1693,1695],{"class":54,"line":325},[52,1691,1692],{"class":70},"export ",[52,1694,789],{"class":544},[52,1696,792],{"class":70},[52,1698,1699,1701,1703,1705,1708,1710,1713,1716,1718,1720,1722],{"class":54,"line":338},[52,1700,797],{"class":544},[52,1702,74],{"class":66},[52,1704,1473],{"class":62},[52,1706,1707],{"class":66},"\u002Fdatasets\u002F",[52,1709,803],{"class":62},[52,1711,1712],{"class":70},"dataset[",[52,1714,1715],{"class":66},"'id'",[52,1717,884],{"class":70},[52,1719,809],{"class":62},[52,1721,812],{"class":66},[52,1723,153],{"class":70},[52,1725,1726,1728,1730,1732,1734,1736,1738,1740,1742,1745,1748,1751,1753,1755,1757,1759,1762,1764,1766],{"class":54,"line":351},[52,1727,820],{"class":819},[52,1729,789],{"class":544},[52,1731,803],{"class":70},[52,1733,827],{"class":66},[52,1735,147],{"class":70},[52,1737,1175],{"class":62},[52,1739,368],{"class":70},[52,1741,836],{"class":66},[52,1743,1744],{"class":70},": dataset[",[52,1746,1747],{"class":66},"\"lookupSrid\"",[52,1749,1750],{"class":70},"], ",[52,1752,845],{"class":66},[52,1754,147],{"class":70},[52,1756,611],{"class":66},[52,1758,368],{"class":70},[52,1760,1761],{"class":66},"\"lod\"",[52,1763,147],{"class":70},[52,1765,273],{"class":62},[52,1767,853],{"class":70},[52,1769,1770,1772,1774,1776],{"class":54,"line":382},[52,1771,858],{"class":819},[52,1773,789],{"class":544},[52,1775,1411],{"class":62},[52,1777,153],{"class":70},[52,1779,1780,1782,1784,1786],{"class":54,"line":388},[52,1781,895],{"class":819},[52,1783,789],{"class":544},[52,1785,900],{"class":62},[52,1787,153],{"class":70},[52,1789,1790],{"class":54,"line":394},[52,1791,907],{"class":70},[52,1793,1794],{"class":54,"line":400},[52,1795,1796],{"class":70},"export.raise_for_status()\n",[52,1798,1800,1803,1806,1808,1810,1812,1814,1817,1820,1823],{"class":54,"line":1799},26,[52,1801,1802],{"class":544},"with",[52,1804,1805],{"class":62}," open",[52,1807,636],{"class":70},[52,1809,737],{"class":66},[52,1811,368],{"class":70},[52,1813,927],{"class":66},[52,1815,1816],{"class":70},") ",[52,1818,1819],{"class":544},"as",[52,1821,1822],{"class":819}," file",[52,1824,1588],{"class":70},[52,1826,1828,1831],{"class":54,"line":1827},27,[52,1829,1830],{"class":819},"    file",[52,1832,1833],{"class":70},".write(export.content)\n",[43,1835,1838],{"className":534,"code":1836,"filename":1837,"language":537,"meta":48,"style":48},"import { writeFile } from \"node:fs\u002Fpromises\";\n\nconst API = \"https:\u002F\u002Fdata.topoexport.com\";\nconst headers = { Authorization: `Bearer ${process.env.TOPOEXPORT_SECRET_KEY}` };\nconst bbox = \"2.341735,48.852743,2.351291,48.857090\";\n\n\u002F\u002F 1. datasets covering the bounding box\nconst lookup = await fetch(`${API}\u002Flookup?${new URLSearchParams({ bbox })}`, { headers });\nif (!lookup.ok) throw new Error(`Lookup failed: HTTP ${lookup.status}`);\nconst dataset = (await lookup.json()).datasets.find((d) => d.type === \"BUILDINGS_3D\");\nif (!dataset) throw new Error(\"No 3D buildings dataset here\");\nconst { name, licence, publisher } = dataset.product;\nconsole.log(`${name} by ${publisher.name}, licence ${licence}`);\n\n\u002F\u002F 2. features of that dataset over the same bounding box\nconst params = new URLSearchParams({ bbox, targetSrid: String(dataset.lookupSrid), format: \"glb\", lod: \"2\" });\nconst exported = await fetch(`${API}\u002Fdatasets\u002F${dataset.id}\u002Ffeatures?${params}`, { headers });\nif (!exported.ok) throw new Error(`Export failed: HTTP ${exported.status}`);\nawait writeFile(\"buildings.glb\", Buffer.from(await exported.arrayBuffer()));\n","JavaScript",[23,1839,1840,1852,1856,1870,1899,1913,1917,1922,1963,1996,2041,2064,2091,2123,2127,2132,2164,2202,2234],{"__ignoreMap":48},[52,1841,1842,1844,1846,1848,1850],{"class":54,"line":55},[52,1843,545],{"class":544},[52,1845,548],{"class":70},[52,1847,551],{"class":544},[52,1849,554],{"class":66},[52,1851,557],{"class":70},[52,1853,1854],{"class":54,"line":132},[52,1855,563],{"emptyLinePlaceholder":562},[52,1857,1858,1860,1863,1865,1868],{"class":54,"line":141},[52,1859,568],{"class":544},[52,1861,1862],{"class":62}," API",[52,1864,574],{"class":544},[52,1866,1867],{"class":66}," \"https:\u002F\u002Fdata.topoexport.com\"",[52,1869,557],{"class":70},[52,1871,1872,1874,1877,1879,1882,1884,1886,1888,1890,1892,1894,1896],{"class":54,"line":156},[52,1873,568],{"class":544},[52,1875,1876],{"class":62}," headers",[52,1878,574],{"class":544},[52,1880,1881],{"class":70}," { Authorization: ",[52,1883,662],{"class":66},[52,1885,665],{"class":70},[52,1887,33],{"class":66},[52,1889,670],{"class":70},[52,1891,33],{"class":66},[52,1893,675],{"class":62},[52,1895,651],{"class":66},[52,1897,1898],{"class":70}," };\n",[52,1900,1901,1903,1906,1908,1911],{"class":54,"line":169},[52,1902,568],{"class":544},[52,1904,1905],{"class":62}," bbox",[52,1907,574],{"class":544},[52,1909,1910],{"class":66}," \"2.341735,48.852743,2.351291,48.857090\"",[52,1912,557],{"class":70},[52,1914,1915],{"class":54,"line":182},[52,1916,563],{"emptyLinePlaceholder":562},[52,1918,1919],{"class":54,"line":193},[52,1920,1921],{"class":1204},"\u002F\u002F 1. datasets covering the bounding box\n",[52,1923,1924,1926,1929,1931,1933,1935,1937,1940,1942,1945,1948,1950,1953,1955,1958,1960],{"class":54,"line":199},[52,1925,568],{"class":544},[52,1927,1928],{"class":62}," lookup",[52,1930,574],{"class":544},[52,1932,630],{"class":544},[52,1934,633],{"class":58},[52,1936,636],{"class":70},[52,1938,1939],{"class":66},"`${",[52,1941,1401],{"class":62},[52,1943,1944],{"class":66},"}\u002Flookup?${",[52,1946,1947],{"class":544},"new",[52,1949,580],{"class":58},[52,1951,1952],{"class":66},"({ ",[52,1954,967],{"class":70},[52,1956,1957],{"class":66}," })",[52,1959,651],{"class":66},[52,1961,1962],{"class":70},", { headers });\n",[52,1964,1965,1967,1969,1971,1974,1976,1978,1980,1982,1985,1988,1990,1992,1994],{"class":54,"line":208},[52,1966,689],{"class":544},[52,1968,692],{"class":70},[52,1970,695],{"class":544},[52,1972,1973],{"class":70},"lookup.ok) ",[52,1975,701],{"class":544},[52,1977,577],{"class":544},[52,1979,706],{"class":58},[52,1981,636],{"class":70},[52,1983,1984],{"class":66},"`Lookup failed: HTTP ${",[52,1986,1987],{"class":70},"lookup",[52,1989,33],{"class":66},[52,1991,719],{"class":70},[52,1993,651],{"class":66},[52,1995,724],{"class":70},[52,1997,1998,2000,2003,2005,2007,2009,2012,2014,2017,2020,2023,2026,2028,2031,2034,2037,2039],{"class":54,"line":214},[52,1999,568],{"class":544},[52,2001,2002],{"class":62}," dataset",[52,2004,574],{"class":544},[52,2006,692],{"class":70},[52,2008,729],{"class":544},[52,2010,2011],{"class":70}," lookup.",[52,2013,122],{"class":58},[52,2015,2016],{"class":70},"()).datasets.",[52,2018,2019],{"class":58},"find",[52,2021,2022],{"class":70},"((",[52,2024,2025],{"class":819},"d",[52,2027,1816],{"class":70},[52,2029,2030],{"class":544},"=>",[52,2032,2033],{"class":70}," d.type ",[52,2035,2036],{"class":544},"===",[52,2038,1564],{"class":66},[52,2040,724],{"class":70},[52,2042,2043,2045,2047,2049,2052,2054,2056,2058,2060,2062],{"class":54,"line":226},[52,2044,689],{"class":544},[52,2046,692],{"class":70},[52,2048,695],{"class":544},[52,2050,2051],{"class":70},"dataset) ",[52,2053,701],{"class":544},[52,2055,577],{"class":544},[52,2057,706],{"class":58},[52,2059,636],{"class":70},[52,2061,1601],{"class":66},[52,2063,724],{"class":70},[52,2065,2066,2068,2070,2073,2075,2078,2080,2083,2086,2088],{"class":54,"line":239},[52,2067,568],{"class":544},[52,2069,1302],{"class":70},[52,2071,2072],{"class":62},"name",[52,2074,368],{"class":70},[52,2076,2077],{"class":62},"licence",[52,2079,368],{"class":70},[52,2081,2082],{"class":62},"publisher",[52,2084,2085],{"class":70}," } ",[52,2087,789],{"class":544},[52,2089,2090],{"class":70}," dataset.product;\n",[52,2092,2093,2096,2099,2101,2103,2105,2108,2110,2112,2114,2117,2119,2121],{"class":54,"line":252},[52,2094,2095],{"class":70},"console.",[52,2097,2098],{"class":58},"log",[52,2100,636],{"class":70},[52,2102,1939],{"class":66},[52,2104,2072],{"class":70},[52,2106,2107],{"class":66},"} by ${",[52,2109,2082],{"class":70},[52,2111,33],{"class":66},[52,2113,2072],{"class":70},[52,2115,2116],{"class":66},"}, licence ${",[52,2118,2077],{"class":70},[52,2120,651],{"class":66},[52,2122,724],{"class":70},[52,2124,2125],{"class":54,"line":265},[52,2126,563],{"emptyLinePlaceholder":562},[52,2128,2129],{"class":54,"line":278},[52,2130,2131],{"class":1204},"\u002F\u002F 2. features of that dataset over the same bounding box\n",[52,2133,2134,2136,2138,2140,2142,2144,2147,2150,2153,2155,2158,2161],{"class":54,"line":293},[52,2135,568],{"class":544},[52,2137,571],{"class":62},[52,2139,574],{"class":544},[52,2141,577],{"class":544},[52,2143,580],{"class":58},[52,2145,2146],{"class":70},"({ bbox, targetSrid: ",[52,2148,2149],{"class":58},"String",[52,2151,2152],{"class":70},"(dataset.lookupSrid), format: ",[52,2154,611],{"class":66},[52,2156,2157],{"class":70},", lod: ",[52,2159,2160],{"class":66},"\"2\"",[52,2162,2163],{"class":70}," });\n",[52,2165,2166,2168,2171,2173,2175,2177,2179,2181,2183,2186,2189,2191,2194,2196,2198,2200],{"class":54,"line":305},[52,2167,568],{"class":544},[52,2169,2170],{"class":62}," exported",[52,2172,574],{"class":544},[52,2174,630],{"class":544},[52,2176,633],{"class":58},[52,2178,636],{"class":70},[52,2180,1939],{"class":66},[52,2182,1401],{"class":62},[52,2184,2185],{"class":66},"}\u002Fdatasets\u002F${",[52,2187,2188],{"class":70},"dataset",[52,2190,33],{"class":66},[52,2192,2193],{"class":70},"id",[52,2195,645],{"class":66},[52,2197,648],{"class":70},[52,2199,651],{"class":66},[52,2201,1962],{"class":70},[52,2203,2204,2206,2208,2210,2213,2215,2217,2219,2221,2223,2226,2228,2230,2232],{"class":54,"line":317},[52,2205,689],{"class":544},[52,2207,692],{"class":70},[52,2209,695],{"class":544},[52,2211,2212],{"class":70},"exported.ok) ",[52,2214,701],{"class":544},[52,2216,577],{"class":544},[52,2218,706],{"class":58},[52,2220,636],{"class":70},[52,2222,711],{"class":66},[52,2224,2225],{"class":70},"exported",[52,2227,33],{"class":66},[52,2229,719],{"class":70},[52,2231,651],{"class":66},[52,2233,724],{"class":70},[52,2235,2236,2238,2240,2242,2244,2246,2248,2250,2252,2255,2257],{"class":54,"line":325},[52,2237,729],{"class":544},[52,2239,732],{"class":58},[52,2241,636],{"class":70},[52,2243,737],{"class":66},[52,2245,740],{"class":70},[52,2247,551],{"class":58},[52,2249,636],{"class":70},[52,2251,729],{"class":544},[52,2253,2254],{"class":70}," exported.",[52,2256,752],{"class":58},[52,2258,755],{"class":70},[19,2260,2261],{},"The secret key must stay on your server: call the Export API from a backend or a script, never from a web page.",[35,2263,1027],{"id":2264},"formats",[939,2266,2267,2295],{},[942,2268,2269],{},[945,2270,2271,2274,2279,2283,2287,2291],{},[948,2272,2273],{},"Dataset type",[948,2275,2277],{"align":2276},"center",[23,2278,1009],{},[948,2280,2281],{"align":2276},[23,2282,1012],{},[948,2284,2285],{"align":2276},[23,2286,1015],{},[948,2288,2289],{"align":2276},[23,2290,1018],{},[948,2292,2293],{"align":2276},[23,2294,1022],{},[958,2296,2297,2314,2330,2348,2374,2390],{},[945,2298,2299,2303,2306,2308,2310,2312],{},[963,2300,2301],{},[23,2302,415],{},[963,2304,2305],{"align":2276},"✓",[963,2307],{"align":2276},[963,2309],{"align":2276},[963,2311],{"align":2276},[963,2313],{"align":2276},[945,2315,2316,2320,2322,2324,2326,2328],{},[963,2317,2318],{},[23,2319,418],{},[963,2321,2305],{"align":2276},[963,2323,2305],{"align":2276},[963,2325,2305],{"align":2276},[963,2327],{"align":2276},[963,2329],{"align":2276},[945,2331,2332,2338,2340,2342,2344,2346],{},[963,2333,2334,368,2336],{},[23,2335,421],{},[23,2337,427],{},[963,2339,2305],{"align":2276},[963,2341],{"align":2276},[963,2343],{"align":2276},[963,2345],{"align":2276},[963,2347],{"align":2276},[945,2349,2350,2364,2366,2368,2370,2372],{},[963,2351,2352,368,2354,368,2356,368,2358,368,2360,368,2362],{},[23,2353,424],{},[23,2355,430],{},[23,2357,433],{},[23,2359,436],{},[23,2361,439],{},[23,2363,442],{},[963,2365,2305],{"align":2276},[963,2367,2305],{"align":2276},[963,2369],{"align":2276},[963,2371],{"align":2276},[963,2373],{"align":2276},[945,2375,2376,2380,2382,2384,2386,2388],{},[963,2377,2378],{},[23,2379,445],{},[963,2381],{"align":2276},[963,2383,2305],{"align":2276},[963,2385],{"align":2276},[963,2387,2305],{"align":2276},[963,2389,2305],{"align":2276},[945,2391,2392,2396,2398,2400,2402,2404],{},[963,2393,2394],{},[23,2395,449],{},[963,2397],{"align":2276},[963,2399],{"align":2276},[963,2401],{"align":2276},[963,2403,2305],{"align":2276},[963,2405,2305],{"align":2276},[19,2407,2408,2409,368,2412,368,2415,368,2418,368,2421,2424,2425,33],{},"Media types: ",[23,2410,2411],{},"application\u002Fgeo+json",[23,2413,2414],{},"model\u002Fgltf-binary",[23,2416,2417],{},"model\u002Fobj",[23,2419,2420],{},"image\u002Ftiff",[23,2422,2423],{},"image\u002Fpng",". Another combination answers ",[23,2426,2427],{},"400",[35,2429,2431],{"id":2430},"other-endpoints","Other endpoints",[939,2433,2434,2444],{},[942,2435,2436],{},[945,2437,2438,2441],{},[948,2439,2440],{},"Endpoint",[948,2442,2443],{},"Returns",[958,2445,2446,2459,2469,2479,2489,2499],{},[945,2447,2448,2453],{},[963,2449,2450],{},[23,2451,2452],{},"GET \u002Fdatasets\u002F{id}",[963,2454,2455,2456],{},"One dataset, same fields as in ",[23,2457,2458],{},"\u002Flookup",[945,2460,2461,2466],{},[963,2462,2463],{},[23,2464,2465],{},"GET \u002Fregions\u002Flookup?lat=&lon=",[963,2467,2468],{},"The region containing a point",[945,2470,2471,2476],{},[963,2472,2473],{},[23,2474,2475],{},"GET \u002Fregions\u002F{id}",[963,2477,2478],{},"One region",[945,2480,2481,2486],{},[963,2482,2483],{},[23,2484,2485],{},"GET \u002Fproducts\u002F{id}",[963,2487,2488],{},"One product (name, licence, publisher)",[945,2490,2491,2496],{},[963,2492,2493],{},[23,2494,2495],{},"GET \u002Fpublishers\u002F{id}",[963,2497,2498],{},"One publisher",[945,2500,2501,2506],{},[963,2502,2503],{},[23,2504,2505],{},"GET \u002Fusage",[963,2507,2508,368,2511,2514,2515,2518],{},[23,2509,2510],{},"clientId",[23,2512,2513],{},"maxCredits"," and ",[23,2516,2517],{},"usedCredits"," of your key for the current period",[35,2520,2522],{"id":2521},"credits","Credits",[19,2524,2525],{},"An export request costs, in export credits:",[43,2527,2530],{"className":2528,"code":2529,"language":112,"meta":48},[110],"hectares of the bounding box (rounded up) × 2 for glb × the dataset's multiplier\n",[23,2531,2529],{"__ignoreMap":48},[405,2533,2534,2540,2543,2546],{},[408,2535,2536,2537,2539],{},"One credit is one hectare of one layer: 1 km² of buildings in GeoJSON costs 100 credits, the same area in ",[23,2538,1012],{}," costs 200.",[408,2541,2542],{},"The multiplier is 1 for most datasets; some, such as AI-detected trees, count double.",[408,2544,2545],{},"Only successful responses are billed.",[408,2547,2548,2550,2551,2554],{},[23,2549,2517],{}," in ",[23,2552,2553],{},"\u002Fusage"," can lag a few minutes behind your actual consumption.",[2556,2557],"docs-plans",{},[19,2559,2560,2561,2563,2564,2567],{},"On the API plan, credits beyond the included ones are billed up to the monthly spending cap you set in the ",[82,2562,14],{}," tab. When the cap is reached, or the trial credits are used up, export requests answer ",[23,2565,2566],{},"403"," until the next period.",[35,2569,2571],{"id":2570},"errors","Errors",[939,2573,2574,2583],{},[942,2575,2576],{},[945,2577,2578,2581],{},[948,2579,2580],{},"Status",[948,2582,956],{},[958,2584,2585,2603,2613,2622],{},[945,2586,2587,2591],{},[963,2588,2589],{},[23,2590,2427],{},[963,2592,2593,2594,2596,2597,2599,2600,2602],{},"Invalid parameter: bounding box over ",[978,2595],{"name":980}," km² or malformed, format not available for this dataset, ",[23,2598,1048],{}," other than 1 or 2, ",[23,2601,1148],{}," not positive",[945,2604,2605,2610],{},[963,2606,2607],{},[23,2608,2609],{},"401",[963,2611,2612],{},"Missing or invalid key",[945,2614,2615,2619],{},[963,2616,2617],{},[23,2618,2566],{},[963,2620,2621],{},"Export credits used up for the period",[945,2623,2624,2629],{},[963,2625,2626],{},[23,2627,2628],{},"404",[963,2630,2631],{},"Unknown dataset, region, product or publisher, or no region at this location",[2633,2634,2635],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":48,"searchDepth":132,"depth":132,"links":2637},[2638,2639,2643,2644,2645,2646,2647],{"id":37,"depth":132,"text":38},{"id":97,"depth":132,"text":98,"children":2640},[2641,2642],{"id":105,"depth":141,"text":106},{"id":480,"depth":141,"text":481},{"id":1159,"depth":132,"text":1160},{"id":2264,"depth":132,"text":1027},{"id":2430,"depth":132,"text":2431},{"id":2521,"depth":132,"text":2522},{"id":2570,"depth":132,"text":2571},"Find the best official dataset for a location, then download its features over a bounding box as GeoJSON, glTF, OBJ, GeoTIFF or PNG.","md",{},{"title":14},"\u002Fdocs\u002Fexport-api",{"title":14,"description":2648},"docs\u002F3.export-api","kdZASYZNp6b3Vy2fIJZnmAA4yidA3BgiCpTAEXPHDlg",[2657],{"title":2658,"path":2659,"stem":2660,"children":2661},"Getting started","\u002Fdocs","docs\u002F0.index",[2662,2663,2667,2671,2672],{"title":2658,"path":2659,"stem":2660},{"title":2664,"path":2665,"stem":2666},"Map tiles","\u002Fdocs\u002Fmaps","docs\u002F1.maps",{"title":2668,"path":2669,"stem":2670},"Geocoding","\u002Fdocs\u002Fgeocoding","docs\u002F2.geocoding",{"title":14,"path":2652,"stem":2654},{"title":2673,"path":2674,"stem":2675},"Migration prompts","\u002Fdocs\u002Fmigrate","docs\u002F4.migrate",[2677,2679],{"title":2668,"path":2669,"stem":2670,"description":2678,"children":-1},"Autocomplete, search, structured search, reverse geocoding and place lookup worldwide, with Pelias-compatible parameters and GeoJSON responses.",{"title":2673,"path":2674,"stem":2675,"description":2680,"children":-1},"Prompts for coding assistants that move a project from Mapbox, MapTiler, Stadia Maps or Google Maps Platform to the TopoExport APIs, where an equivalent exists.",1792558216225]