<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: IrisDataLabs</title>
    <description>The latest articles on Forem by IrisDataLabs (@irisdatalabs).</description>
    <link>https://forem.com/irisdatalabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3592700%2F4e763283-55ab-4698-aa61-246cbf5fa6d8.jpg</url>
      <title>Forem: IrisDataLabs</title>
      <link>https://forem.com/irisdatalabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/irisdatalabs"/>
    <language>en</language>
    <item>
      <title>Our Lunar Landing Site API goes Live Today!</title>
      <dc:creator>IrisDataLabs</dc:creator>
      <pubDate>Sat, 01 Nov 2025 23:04:10 +0000</pubDate>
      <link>https://forem.com/irisdatalabs/our-lunar-landing-site-api-goes-live-today-1hig</link>
      <guid>https://forem.com/irisdatalabs/our-lunar-landing-site-api-goes-live-today-1hig</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: Finding a Safe Place to Land on the Moon is Really Hard
&lt;/h2&gt;

&lt;p&gt;Imagine you're planning a lunar mission. You need to find a landing site that's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safe&lt;/strong&gt;: Flat terrain, low roughness, minimal hazards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sunlit&lt;/strong&gt;: Enough solar visibility for power generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible&lt;/strong&gt;: Close to your target location&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Well-characterized&lt;/strong&gt;: Backed by high-quality data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The traditional workflow? Download hundreds of gigabytes of NASA raster data, spend days in QGIS or ArcGIS running terrain analyses, manually compare sites, and repeat for every mission scenario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time required&lt;/strong&gt;: 2-4 weeks per landing site evaluation.&lt;/p&gt;

&lt;p&gt;For the Artemis program, NASA identified &lt;a href="https://www.nasa.gov/news-release/nasa-identifies-candidate-regions-for-landing-next-americans-on-moon/" rel="noopener noreferrer"&gt;13 candidate regions&lt;/a&gt; near the Lunar South Pole after extensive analysis of terrain data, illumination patterns, and accessibility—work that requires specialized GIS expertise and significant computational resources.&lt;/p&gt;

&lt;p&gt;We wanted to make this process instant and accessible to anyone by pre-analysis and pre-computation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Turn Weeks of Analysis into Milliseconds
&lt;/h2&gt;

&lt;p&gt;We built an API that pre-processes NASA's Lunar Reconnaissance Orbiter (LRO) data and serves analyzed landing sites through a fast, queryable interface.&lt;/p&gt;

&lt;p&gt;Built by &lt;em&gt;Iris Data Labs&lt;/em&gt;, this API is part of our broader effort to make lunar and planetary data more accessible for exploration and research.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🗺️ &lt;strong&gt;1.18M pre-analyzed sites&lt;/strong&gt; across the Lunar South Pole&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Sub-100ms response times&lt;/strong&gt; with PostGIS spatial indexing&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Smart recommendations&lt;/strong&gt; with plain-English reasoning&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;60+ features per site&lt;/strong&gt;: terrain metrics, illumination data, hazard scores&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Export anywhere&lt;/strong&gt;: GeoJSON for QGIS, KML for Google Earth, CSV for Excel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of spending weeks on GIS analysis, mission planners can now query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations?lat=-89.5&amp;amp;lon=45&amp;amp;mission_type=artemis&amp;amp;top_n=5"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your_key_here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And get ranked recommendations in milliseconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack: Why These Choices Matter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  FastAPI: Speed + Developer Experience
&lt;/h3&gt;

&lt;p&gt;We chose FastAPI because it provides interactive API documentation out of the box. The auto-generated &lt;code&gt;/docs&lt;/code&gt; endpoint serves our feature—beta testers in exploration  and testing of the API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key architectural benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type validation&lt;/strong&gt;: Catch coordinate errors (invalid lat/lon) before they hit the database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-generated OpenAPI spec&lt;/strong&gt;: Third-party tools can integrate automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Async support&lt;/strong&gt;: Handle concurrent requests efficiently&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  PostgreSQL + PostGIS: Spatial Queries at Scale
&lt;/h3&gt;

&lt;p&gt;For 1.18M points with spatial queries, we needed spatial indexing. PostGIS was the natural choice for geographic data at this scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why PostGIS?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Battle-tested for spatial operations&lt;/li&gt;
&lt;li&gt;GIST indexes make radius queries incredibly fast&lt;/li&gt;
&lt;li&gt;Native geography types handle spherical distance calculations&lt;/li&gt;
&lt;li&gt;Integrates seamlessly with standard SQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The performance difference:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without spatial indexing: Sequential scan through all 1.18M rows&lt;br&gt;
With PostGIS GIST index: Direct lookup of relevant sites only&lt;/p&gt;

&lt;p&gt;A properly indexed spatial query searching a 50km radius completes in &lt;strong&gt;30-50ms&lt;/strong&gt; even with millions of rows. That's the power of specialized geospatial indexing.&lt;/p&gt;

&lt;p&gt;The geography type automatically handles distance calculations on a sphere, which is essential for lunar coordinates where standard Euclidean distance would be wildly inaccurate.&lt;/p&gt;
&lt;h3&gt;
  
  
  Railway: Simple Deployment
&lt;/h3&gt;

&lt;p&gt;We deployed on &lt;a href="https://railway.app" rel="noopener noreferrer"&gt;Railway&lt;/a&gt; for simplicity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL with PostGIS extension included&lt;/li&gt;
&lt;li&gt;Auto-deploys from GitHub (push = live in 2 minutes)&lt;/li&gt;
&lt;li&gt;Environment variables managed through their dashboard&lt;/li&gt;
&lt;li&gt;Free tier perfect for beta testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deployment process during Beta phase: push to GitHub, wait 90 seconds, done. No Docker configs, no Kubernetes, no infrastructure complexity.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Data Pipeline: From NASA Rasters to API
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Data Sources
&lt;/h3&gt;

&lt;p&gt;NASA's Lunar Reconnaissance Orbiter provides two critical datasets:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LOLA (Lunar Orbiter Laser Altimeter):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5-meter resolution elevation data&lt;/li&gt;
&lt;li&gt;Used to derive: slope, roughness, relief, hazard index&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;LROC (Lunar Reconnaissance Orbiter Camera):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Illumination maps at 60-240m resolution&lt;/li&gt;
&lt;li&gt;Shows solar visibility percentage over a lunar day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total raw data: &lt;strong&gt;~300GB&lt;/strong&gt; of GeoTIFF rasters covering the South Pole region.&lt;/p&gt;
&lt;h3&gt;
  
  
  Processing Pipeline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Site Generation&lt;/strong&gt;&lt;br&gt;
Created a grid of candidate sites spaced 200m apart across -90° to -83.5° latitude, resulting in 1.18M candidate locations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Terrain Analysis&lt;/strong&gt;&lt;br&gt;
For each site, computed metrics at three scales (25m, 50m, 100m radius):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elevation statistics (mean, std deviation)&lt;/li&gt;
&lt;li&gt;Slope analysis (mean, max, variability)&lt;/li&gt;
&lt;li&gt;Roughness (surface texture)&lt;/li&gt;
&lt;li&gt;Relief (elevation range)&lt;/li&gt;
&lt;li&gt;Composite hazard index (0-3, lower is safer)
&lt;em&gt;All distances are measured in meters; slopes are expressed in degrees.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Illumination Analysis&lt;/strong&gt;&lt;br&gt;
Analyzed LROC data to determine solar visibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mean visibility (% of lunar day with sunlight)&lt;/li&gt;
&lt;li&gt;Minimum visibility (worst spot in the area)&lt;/li&gt;
&lt;li&gt;Variability (consistency of illumination)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Near the South Pole, some crater rims get &amp;gt;90% illumination (near-constant sunlight), while crater floors get &amp;lt;5% (permanent shadow). This is critical data for mission planning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Database Loading&lt;/strong&gt;&lt;br&gt;
Batch-loaded all 1.18M analyzed sites into PostgreSQL with spatial indexes. Total processing time: ~45 minutes. Database size: ~12GB with indexes.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Smart Recommendation Engine
&lt;/h2&gt;

&lt;p&gt;The most interesting endpoint is &lt;code&gt;/recommendations&lt;/code&gt;, which uses mission-specific scoring to rank sites.&lt;/p&gt;
&lt;h3&gt;
  
  
  Mission-Specific Scoring
&lt;/h3&gt;

&lt;p&gt;Different missions have different priorities, so the scoring weights adapt:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artemis (Human Landing)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safety: 50% weight (crew protection is paramount)&lt;/li&gt;
&lt;li&gt;Illumination: 30% weight (power for life support)&lt;/li&gt;
&lt;li&gt;Accessibility: 20% weight (reach target region)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Robotic Lander&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safety: 40% weight (protect instruments)&lt;/li&gt;
&lt;li&gt;Illumination: 40% weight (solar power critical)&lt;/li&gt;
&lt;li&gt;Accessibility: 20% weight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rover Mission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safety: 30% weight (can handle rougher terrain)&lt;/li&gt;
&lt;li&gt;Illumination: 20% weight (less critical)&lt;/li&gt;
&lt;li&gt;Accessibility: 50% weight (must reach science targets)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each component score (0-10) is calculated from the underlying metrics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safety score&lt;/strong&gt;: Based on hazard index, slope, roughness&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Illumination score&lt;/strong&gt;: Based on solar visibility percentage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility score&lt;/strong&gt;: Based on distance to target location&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Plain-English Reasoning
&lt;/h3&gt;

&lt;p&gt;Every recommendation includes human-readable explanations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rank"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"site_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;928969&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"overall_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;8.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Exceptional safety (hazard 0.43) with excellent visibility (87.3%), very close to target (8.2 km). Prioritizes crew safety for human landing."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"warnings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"No significant concerns identified"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"strengths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Excellent safety rating (9.2/10)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Outstanding solar visibility (87.3%)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Very flat terrain (slope 2.1°)"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the API accessible to non-GIS experts. Mission planners understand &lt;em&gt;why&lt;/em&gt; a site is recommended, not just that it scored well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication: Simple But Secure
&lt;/h2&gt;

&lt;p&gt;For the beta, we implemented API key authentication with rate limiting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API keys in the format &lt;code&gt;ldp_live_[32_random_chars]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Passed via &lt;code&gt;X-API-Key&lt;/code&gt; header&lt;/li&gt;
&lt;li&gt;Rate limited by tier (beta: 100 requests/day)&lt;/li&gt;
&lt;li&gt;Usage tracked per key&lt;/li&gt;
&lt;li&gt;Daily reset at midnight UTC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keys stored in PostgreSQL with user metadata&lt;/li&gt;
&lt;li&gt;Middleware validates on every request&lt;/li&gt;
&lt;li&gt;Failed requests don't count against quota&lt;/li&gt;
&lt;li&gt;Clear error messages guide users to sign up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps the barrier to entry low while preventing abuse. Beta testers get their key instantly and can start querying within minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Architectural Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why PostgreSQL + PostGIS Over NoSQL?
&lt;/h3&gt;

&lt;p&gt;We considered MongoDB with geospatial indexes, but chose PostgreSQL + PostGIS because:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data is relational and structured&lt;/strong&gt;: Every site has the same 60+ features. A fixed schema makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spatial queries are critical&lt;/strong&gt;: PostGIS is battle-tested for geographic operations. The &lt;code&gt;ST_DWithin&lt;/code&gt; function makes radius searches trivial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACID compliance matters&lt;/strong&gt;: For a data API, consistency is more important than eventual consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance was proven&lt;/strong&gt;: PostGIS GIST indexes can handle millions of spatial queries efficiently.&lt;/p&gt;

&lt;p&gt;The trade-off? More complex setup than a managed NoSQL service. But for this use case, relational + spatial was the right choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Denormalization?
&lt;/h3&gt;

&lt;p&gt;Originally we considered normalized tables: &lt;code&gt;sites&lt;/code&gt;, &lt;code&gt;terrain_metrics&lt;/code&gt;, &lt;code&gt;illumination_metrics&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We chose one wide table instead&lt;/strong&gt; because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every query needs data from all three "tables" anyway&lt;/li&gt;
&lt;li&gt;No JOINs = simpler queries, better performance&lt;/li&gt;
&lt;li&gt;Data is static (no updates, just reads)&lt;/li&gt;
&lt;li&gt;Easier to reason about for API consumers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The downside? Larger table size and some data duplication at different radius scales (25m, 50m, 100m). But with disk space cheap and query speed critical, it was the right trade-off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Multiple Analysis Radii?
&lt;/h3&gt;

&lt;p&gt;Each site has metrics at 25m, 50m, and 100m radius. This lets users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small landers&lt;/strong&gt;: Use 25m radius for precise site analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Large landers&lt;/strong&gt;: Use 100m radius for broader area assessment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare scales&lt;/strong&gt;: Understand terrain variability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It triples the data volume but provides much more flexibility for different mission scales.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Beta is Live Today! 🚀
&lt;/h2&gt;

&lt;p&gt;After weeks of development and testing, &lt;strong&gt;We're opening the public beta today&lt;/strong&gt;. The API is fully functional with all core features ready:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's ready:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;1.18M pre-analyzed sites&lt;/strong&gt; loaded and indexed&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Sub-100ms query performance&lt;/strong&gt; verified&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Interactive documentation&lt;/strong&gt; at &lt;code&gt;/docs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Free beta tier&lt;/strong&gt; (100 requests/day)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;All endpoints tested&lt;/strong&gt; and stable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who we're looking for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mission planners evaluating landing sites&lt;/li&gt;
&lt;li&gt;Academic researchers working with lunar data&lt;/li&gt;
&lt;li&gt;GIS professionals who need processed NASA datasets&lt;/li&gt;
&lt;li&gt;Space enthusiasts and students learning about lunar exploration&lt;/li&gt;
&lt;li&gt;Developers building lunar simulation or planning tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we'd love to know:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What features would make this more useful for your work?&lt;/li&gt;
&lt;li&gt;What data formats do you prefer?&lt;/li&gt;
&lt;li&gt;What mission scenarios should I optimize for?&lt;/li&gt;
&lt;li&gt;How does this fit into your existing workflow?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Immediate priorities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gather feedback from early beta users&lt;/li&gt;
&lt;li&gt;Monitor API performance under real usage&lt;/li&gt;
&lt;li&gt;Iterate on features based on user needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Potential features&lt;/strong&gt; (depending on beta feedback):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python SDK to simplify common queries&lt;/li&gt;
&lt;li&gt;Advanced filtering (slope ranges, multi-criteria search)&lt;/li&gt;
&lt;li&gt;WebSocket endpoint for real-time queries&lt;/li&gt;
&lt;li&gt;Additional export formats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Long-term vision:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand coverage beyond South Pole (full lunar surface)&lt;/li&gt;
&lt;li&gt;Mars landing site data (HiRISE + MOLA)&lt;/li&gt;
&lt;li&gt;Machine learning for automated site ranking&lt;/li&gt;
&lt;li&gt;3D terrain visualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But first: We want to see how people actually use this and what would make it more valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The public beta is live right now.&lt;/strong&gt; Sign up takes 30 seconds, and you'll get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free API key (100 requests/day)&lt;/li&gt;
&lt;li&gt;Access to all 1.18M landing sites&lt;/li&gt;
&lt;li&gt;Interactive documentation&lt;/li&gt;
&lt;li&gt;Export in GeoJSON, KML, CSV&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get started:&lt;/strong&gt; &lt;a href="https://ldp-api-beta.vercel.app" rel="noopener noreferrer"&gt;https://ldp-api-beta.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick test:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your_key_here"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://lunarlandingsiteapi.up.railway.app/api/v1/recommendations?lat=-89.5&amp;amp;lon=0&amp;amp;mission_type=artemis&amp;amp;top_n=3"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Interactive docs:&lt;/strong&gt; &lt;a href="https://lunarlandingsiteapi.up.railway.app/docs" rel="noopener noreferrer"&gt;https://lunarlandingsiteapi.up.railway.app/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'd love to hear what you think! What features would be most useful? What's missing? Drop a comment or reach out at &lt;a href="mailto:info@irisdatalabs.com"&gt;info@irisdatalabs.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions We're Still Figuring Out
&lt;/h2&gt;

&lt;p&gt;As we launch this beta, there are some open questions we'd love the community's input on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data formats&lt;/strong&gt;: Is GeoJSON/KML/CSV enough? What other formats would be useful?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching&lt;/strong&gt;: Data is static—would Redis caching help for popular queries?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDKs&lt;/strong&gt;: Python is obvious first choice. What other languages would you want?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GraphQL&lt;/strong&gt;: REST works great now, but would GraphQL be better for complex nested queries?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versioning&lt;/strong&gt;: What's the best approach for handling breaking changes when we add &lt;code&gt;/v2&lt;/code&gt;?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What would make this more useful for your work?&lt;/strong&gt; We're particularly interested in hearing from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mission planners: What's missing for real mission planning?&lt;/li&gt;
&lt;li&gt;Researchers: What analysis features would help?&lt;/li&gt;
&lt;li&gt;GIS professionals: How does this fit your workflow?&lt;/li&gt;
&lt;li&gt;Students: What would make this better for learning?&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Today marks the official public beta launch. We're excited (and a bit nervous!) to see how people use this. If you're working on anything related to lunar exploration, mission planning, or space tech or you just think this is interesting—I'd love to connect.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Beta signup: &lt;a href="https://ldp-api-beta.vercel.app" rel="noopener noreferrer"&gt;https://ldp-api-beta.vercel.app&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Questions/feedback: &lt;a href="mailto:info@irisdatalabs.com"&gt;info@irisdatalabs.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by the team at Iris Data Labs - building data and AI solutions for space technology. Follow us for future updates on Lunar Data Platform and space data APIs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>python</category>
      <category>postgres</category>
      <category>gis</category>
    </item>
  </channel>
</rss>
