بینش داده های نقشه برداری AI محور از Gemini

استفاده از هوش مصنوعی در برنامه های وب خود برای تبدیل داده های جغرافیایی
ماه گذشته ، در اجلاس توسعه دهنده و فناوری 2025 ESRI ، من یک جلسه سریع را ارائه دادم که در آن من از این طریق که چگونه یک پرس و جو متن ساده می تواند با استفاده از API زبان طبیعی Google Gemini و نقشه های ArcGis SDK برای JavaScript به نکات برجسته نقشه پویا تبدیل شود. بنابراین ، بیایید دقیقاً در مورد چگونگی ساخت برنامه وب GIS – از سریع تا نقشه – فقط در چند مرحله و با حداقل کد ، بررسی کنیم.
چرا جمینی + GIS؟
من عاشق یافتن راه های سرگرم کننده برای جمع آوری آنچه می دانم با آنچه می دانم. در این حالت ، من می خواستم به کاربران اجازه دهم که هر سؤالی را تایپ کنم (“لیست 3 کشور داغ برتر” ، “به من کشورهای با جمعیت> 100 میلیون” و غیره را نشان دهم) و فوراً نتایج را در نقشه جهانی برجسته می کنند. جمینی تجزیه و تحلیل زبان طبیعی را انجام می دهد ، در حالی که Arcgis پرس و جوهای فضایی و ارائه را انجام می دهد.
1. تنظیم پروژه
1.1 پرونده های خود را ایجاد کنید
در VS Code ، یک پوشه جدید ایجاد کنید و در داخل آن پرونده های زیر را ایجاد کنید:
- index.html
- scripts.js
- Styles.css
1.2 اسکلت HTML
از میانبر VScode (! + Enter) استفاده کنید تا HTML خود را داربست کنید. سپس پرونده های محلی CSS و JS خود را پیوند دهید:
جمینی + نسخه ی نمایشی Arcgis
1.3 Include ArcGIS JS SDK & Calcite
Add these inside before your styles.css and scripts.js:
1.4 ArcGIS API key
Still in , set your key:
2. UI را بسازید
2.1 نقشه و کنترل را کنترل کنید
در , create two columns—map on left, controls on right:
2.2 CSS برای چیدمان
حداقل CSS را در سبک ها اضافه کنید. CSS:
html, body, arcgis-map {
padding:0;
margin:0;
height:100%;
width:100%;
}
.main-container {
display:flex;
height:100%;
}
.left-column {
flex:1;
}
.right-column {
position:absolute;
top:10px;
right:10px;
background:rgba(255,255,255,0.9);
padding:1rem;
border-radius:4px;
max-width:250px;
}
#countryList {
margin:0.5rem 0;
padding-left:1rem;
}
3. منطق پرس و جو جمینی
SCRIPTS.JS را باز کنید. ابتدا کلید GEMINI و URL LAYER FEETHAT را ذخیره کنید:
const googleGeminiApiKey = "YOUR_GEMINI_KEY";
const featureLayerURL = "https://services.arcgis.com/.../FeatureServer/0";
💡 نکته PRO: کلیدهای خود را در یک پیکربندی جداگانه قرار دهید. به این ترتیب شما هرگز به طور تصادفی اسرار را مرتکب نمی شوید.
3.1 عملکرد fetchcountriesfromquery
این عملکرد:
- ارسال کردن
query (q)
+ دستورالعمل به جمینی - متن برگشتی را بر اساس خطوط تقسیم می کند
- شماره گذاری نوارها ، نامهای کشور و توضیحات را استخراج می کند
async function fetchCountriesFromQuery(q) {
const res = await fetch(
`https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${googleGeminiApiKey}`, {
method:'POST',
headers:{ 'Content-Type':'application/json' },
body: JSON.stringify({
contents:[{ parts:[{
text: q +
" only list the country names in a numbered list, then on a new line start with 'Explanation:' and provide a one-sentence explanation."
}]}]
})
}
);
const data = await res.json();
const lines = data.candidates[0].content.parts[0].text.split('\n');
const countries = [], explanationLines = [];
for (let line of lines) {
const cleaned = line.replace(/^\d+\.?\s*/,'').trim();
if (/^Explanation:/i.test(cleaned)) explanationLines.push(cleaned.replace(/Explanation:\s*/i,''));
else if (/^[A-Za-z\s]+$/.test(cleaned) && cleaned) countries.push(cleaned);
}
return { countries, explanation: explanationLines[0] || "" };
}
4. برجسته کردن روی نقشه
4.1 مرجع نقشه را اولیه کنید
هنوز در SCRIPTS.JS ، بعد از بار صفحه:
const mapEl = document.getElementById('map');
let currentHighlightLayer = null;
4.2 برجسته های برجسته
این عملکرد:
- هر لایه برجسته موجود را حذف می کند
- یک SQL در جایی که از لیست کشور قرار دارد می سازد
- نمایش داده شد
- یک گرافیک را با پر کردن قرمز ایجاد می کند
async function highlightCountries(countries) {
if (currentHighlightLayer) mapEl.map.remove(currentHighlightLayer);
const where = `COUNTRY IN (${countries.map(c=>`'${c.replace(/'/g,"''")}'`).join(',')})`;
const [FeatureLayer, Graphic, GraphicsLayer] = await Promise.all([
$arcgis.import('esri/layers/FeatureLayer'),
$arcgis.import('esri/Graphic'),
$arcgis.import('esri/layers/GraphicsLayer')
]);
const fl = new FeatureLayer({ url: featureLayerURL, token: esriConfig.apiKey });
const result = await fl.queryFeatures({ where, outFields:['*'], returnGeometry:true });
const hlLayer = new GraphicsLayer();
result.features.forEach(f => {
hlLayer.add(new Graphic({
geometry: f.geometry,
symbol: { type:'simple-fill', color:[255,0,0,0.5], outline:{color:'red',width:2} }
}));
});
currentHighlightLayer = hlLayer;
mapEl.map.add(hlLayer);
}
5. تعامل کاربر را سیم کنید
یک شنونده رویداد را به دکمه ارسال ضمیمه کنید:
const listEl = document.getElementById('countryList');
const explEl = document.getElementById('explanation');
document.getElementById('submitQuery').addEventListener('click', async () => {
const q = document.getElementById('userInput').value.trim();
if (!q) return;
listEl.innerHTML = explEl.textContent = "";
const { countries, explanation } = await fetchCountriesFromQuery(q);
// display list & explanation
listEl.innerHTML = countries.map(c=>`${c} `).join('');
explEl.textContent = explanation;
// highlight on map
await highlightCountries(countries);
});
6. تست و تکرار
- index.html را در مرورگر خود باز کنید.
- پرس و جو مانند "3 کشور برتر پرجمعیت" را تایپ کنید.
- روی ارسال کلیک کنید.
- لیست را تماشا کنید و نقشه آن کشورها را برجسته می کند.
💡 نکته حرفه ای: از کنسول مرورگر خود برای بازرسی کشورها و آرایه های توضیح استفاده کنید - این به اشکال در تجزیه و تحلیل منطق کمک می کند.
در صورت تمایل می توانید دستورالعمل های سریع ، یک ظاهر طراحی شده یا رنگ های نماد را تغییر دهید. اکنون یک برنامه وب کاملاً تعاملی GIS را که توسط زبان طبیعی هدایت می شود ساخته اید!
پایان
تقریباً در حدود 100 خط کد ، شما قدرت NLP Gemini را با قابلیت نقشه برداری ArcGIS ترکیب کرده اید تا متن کاربر را به بینش های جغرافیایی تبدیل کنید. این الگوی-زبان طبیعی → داده های ساختاری → تجسم مکانی-امکانات بی شماری را برای نقشه های پویا و کاربر محور باز می کند.
این مقاله توسط کورتنی یاتو ، مدافع توسعه دهنده ESRI نوشته شده است. نظرات بیان شده در این مقاله فقط کورتنی است و لزوماً نمایانگر نظرات ، استراتژی ها یا نظرات کارفرمای وی نیست. اگر بازخورد دارید ، لطفاً دوست داشته باشید و/یا نظر دهید. علاوه بر این ، اگر سؤال یا اظهار نظر دارید که ترجیح می دهید به صورت خصوصی ارسال کنید ، می توانید از طریق LinkedIn ، X یا Bluesky با Courtney تماس بگیرید. اگر در حال بررسی سوئیچ شغلی هستید ، به دنبال ورود به فناوری هستید ، یا کنجکاو درباره اینکه چه چیزی در Esri کار می کند ، کنجکاو باشید ، پس لطفاً برای پست های آینده با ما در ارتباط باشید! برای اطلاعات بیشتر می توانید صفحه مشاغل ESRI یا این فیلم را نیز بررسی کنید.