| 
									
										
										
										
											2021-07-15 09:34:00 +02:00
										 |  |  | import FeaturePipeline from "../Logic/FeatureSource/FeaturePipeline"; | 
					
						
							|  |  |  | import {Utils} from "../Utils"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 10:56:30 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Exports given featurePipeline as a geojson FeatureLists (downloads as a json) | 
					
						
							|  |  |  |  * @param featurePipeline The FeaturePipeline you want to export | 
					
						
							|  |  |  |  * @param options The options object | 
					
						
							|  |  |  |  * @param options.metadata True if you want to include the MapComplete metadata, false otherwise | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export function exportAsGeoJson(featurePipeline: FeaturePipeline, options: { metadata?: boolean} = {}) { | 
					
						
							| 
									
										
										
										
											2021-07-15 09:34:00 +02:00
										 |  |  |     let defaults = { | 
					
						
							| 
									
										
										
										
											2021-07-15 10:56:30 +02:00
										 |  |  |         metadata: false, | 
					
						
							| 
									
										
										
										
											2021-07-15 09:34:00 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |     options = Utils.setDefaults(options, defaults); | 
					
						
							| 
									
										
										
										
											2021-07-15 10:56:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 09:34:00 +02:00
										 |  |  |     // Select all features, ignore the freshness and other data
 | 
					
						
							| 
									
										
										
										
											2021-07-15 09:58:17 +02:00
										 |  |  |     let featureList: JSON[] = featurePipeline ? featurePipeline.features.data.map((feature) => feature.feature) : ["I'm empty"]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 10:56:30 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Removes the metadata of MapComplete (all properties starting with an underscore) | 
					
						
							|  |  |  |      * @param featureList JsonList containing features, output object | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2021-07-15 09:58:17 +02:00
										 |  |  |     function removeMetaData(featureList: JSON[]) { | 
					
						
							|  |  |  |         for (let i=0; i < featureList.length; i++) { | 
					
						
							|  |  |  |             let feature = featureList[i]; | 
					
						
							|  |  |  |             for (let property in feature.properties) { | 
					
						
							|  |  |  |                 if (property[0] == "_") { | 
					
						
							|  |  |  |                     delete featureList[i]["properties"][property]; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 10:56:30 +02:00
										 |  |  |     if (!options.metadata) removeMetaData(featureList); | 
					
						
							| 
									
										
										
										
											2021-07-15 09:58:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-15 09:34:00 +02:00
										 |  |  |     let geojson = {type: "FeatureCollection", features: featureList} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Utils.offerContentsAsDownloadableFile(JSON.stringify(geojson), "Geodata.json"); | 
					
						
							|  |  |  | } |