لمحة عن هذا الدرس التطبيقي حول الترميز
1. قبل البدء
يعلّمك هذا الدرس التطبيقي حول كيفية إنشاء تمثيل بصري للبيانات الجغرافية المكانية كبيرة الحجم باستخدام واجهة برمجة تطبيقات JavaScript لـ "خرائط Google" ومنصة Chromebase.gl، وهو إطار عمل مفتوح المصدر وتم تسريع WebGL في تمثيل البيانات.
المتطلّبات الأساسية
الإجراءات التي ستنفذّها
- دمج "منصة خرائط Google" مع Chromebase.gl.
- يمكنك استيراد مجموعة بيانات إلى خريطة من BigQuery.
- حدّد نقاط البيانات على الخريطة.
الأشياء التي تحتاج إليها
- حساب Google
- محرِّر نصوص أو IDE من اختيارك
- معرفة أساسية بلغة JavaScript وHTML وCSS
2. إعداد البيئة
بدء استخدام "منصة خرائط Google"
اتبع الخطوات التالية إذا لم يسبق لك استخدام "منصة خرائط Google":
- أنشئ حساب فوترة.
- أنشئ مشروعًا.
- تفعيل واجهات برمجة التطبيقات وحزم تطوير البرامج (SDK) في "منصة خرائط Google"
- أنشئ مفتاح واجهة برمجة تطبيقات.
تنزيل Node.js
وإذا لم يتوفّر لديك ذلك، يمكنك الانتقال إلى https://nodejs.org/، وتنزيل وقت تشغيل Node.js وتثبيته على جهاز الكمبيوتر.
تتضمن Node.js npm، وهو مدير حزمة يلزمك تثبيت التبعيات لهذا الدرس التطبيقي حول الترميز.
إعداد مشروع إجراء التفعيل
لتوفير الوقت، يتضمّن المشروع للمبتدئين لهذا الدرس التطبيقي كل الرموز النموذجية التي تحتاجها لإنشاء خريطة.
للبدء، اتّبِع الخطوات التالية:
- إنشاء نسخة طبق الأصل من هذا المستودع أو تنزيلها.
- من سطر الأوامر، انتقِل إلى الدليل
/starter
الذي يحتوي على بنية الملف الأساسية التي تحتاجها لإكمال هذا الدرس التطبيقي حول الترميز. - تثبيت تبعيات من npm من خلال تشغيل الأمر التالي:
npm install
- شغِّل مشروع المبتدئين في متصفحك باستخدام Webpack Dev Server من خلال تشغيل الأمر التالي:
npm start
The starter app opens in your browser and displays a map.
- افتح المشروع في IDE وانتقِل إلى دليل
/starter/src
. - افتح ملف
app.js
.
ستتمكّن من تنفيذ جميع ترميزك في هذا القسم من الرمز في الملف:
const googleMapsAPIKey = 'YOUR API KEY';
loadJSAPI();
function runApp() {
// Your code goes here
}
لن تفعل أي شيء مع باقي الرمز في الملف، والذي يحمّل واجهة برمجة تطبيقات JavaScript للخرائط والخريطة:
/* API and map loader helpers */
function loadJSAPI() {
const googleMapsAPIURI = `https://maps.googleapis.com/maps/api/js?key=${googleMapsAPIKey}&callback=runApp`;
const script = document.createElement('script');
script.src = googleMapsAPIURI;
script.defer = true;
script.async = true;
window.runApp = runApp;
document.head.appendChild(script);
}
function initMap() {
const mapOptions = {
center: { lat: 40.75097, lng: -73.98765 },
zoom: 14,
styles: mapStyle
};
const mapDiv = document.getElementById('map');
return new google.maps.Map(mapDiv, mapOptions);
}
- يمكنك استبدال
YOUR API KEY
بمفتاح واجهة برمجة التطبيقات الفعلي الذي أنشأته عند إعداد بيئتك:
const googleMapsAPIKey = 'YOUR API KEY';
3. تصدير البيانات من BigQuery
توفر أداة BigQuery العديد من مجموعات البيانات العامة التي يمكنك استخدامها لتحليل البيانات أو أغراض تجريبية.
استخدم BigQuery لتصدير مجموعة بيانات متاحة للجميع تتضمن بيانات الموقع لمدينة نيويورك "سيتي بايك"، وهي برنامج لمشاركة الدراجات يضم 14500 درّاجة و900 موقع، باتباع الخطوات التالية:
- انتقِل إلى Cloud Console.
- انقر على قائمة التنقّل
> BigQuery.
- في محرِّر طلب البحث، أدخِل طلب البحث التالي وانقر على تشغيل:
SELECT
longitude,
latitude,
name,
capacity
FROM
`bigquery-public-data.new_york_citibike.citibike_stations`
- بعد اكتمال طلب البحث، انقر على حفظ النتائج، ثم اختَر JSON (local file) لتصدير مجموعة النتائج. يمكنك تسمية الملف
stations.json
وحفظه في الدليل/src
.
الآن بعد أن حصلت على بياناتك، يمكنك إنشاء التمثيل البصري الأول باستخدام Chromebase.gl.
4. تحديد التمثيل البصري
Chromebase.gl عبارة عن إطار عرض مرئي مفتوح المصدر يستخدم WebGL لإنتاج عروض ثنائية وثلاثية الأبعاد عالية الدقة لمجموعات البيانات الكبيرة للغاية. وتعالج هذه البيانات مئات الآلاف من نقاط البيانات، وعند تحسينها، يمكنها معالجة الملايين من هذه النقاط.
لإنشاء تمثيل بصري، تحتاج إلى فئتين - GoogleMapsOverlay
وإحدى طبقات العرض المرئي.gl's.
للبدء، يمكنك إنشاء مثيل ScatterplotLayer
: يعرض نقاط البيانات كدائرة على الخريطة:
- يمكنك استيراد class Chromebase.gl's
ScatterplotLayer
من خلال إضافة ما يلي إلى الجزء العلوي منapp.js
:
import { ScatterplotLayer } from '@deck.gl/layers';
- حدِّد خصائص الطبقة من خلال الاختيار من بين نوعَي الخصائص المتاحة لطبقة سطح المكتب المبعثرة.
وتزوِّد خصائص التعيين بإعداد التمثيل البصري بالمعلومات التي تحتاج إلى عرضها، مثل موضع نقاط البيانات ونطاقها. تتيح لك خصائص Stylerer إمكانية تخصيص نمط التمثيل البصري.
في ما يلي تصنيف للخصائص التي تستخدمها في مقتطف الرمز التالي:
- يسمح
id
للعارض بالتعرّف على الطبقات لأسباب مختلفة، مثل عمليات إعادة الطلاء وغيرها من التعديلات على التمثيل البصري. تتطلب جميع طبقات Chromebase.gl رقم تعريف فريدًا تُعيّنه. - تحدّد
data
مصدر البيانات للتمثيل البصري. اضبطها على‘./stations.j
son' لاستخدام مجموعة البيانات التي تم تصديرها من BigQuery. - يسترد
getPosition
موضع كل كائن من مصدر البيانات. تجدر الإشارة إلى أن قيمة السمة هي وظيفة. تستخدم package.gl الدالة للتكرار في كل صف في مجموعة البيانات. وتخبر الدالة العارض كيفية الوصول إلى خط العرض وخط الطول لنقطة البيانات في كل صف. في مجموعة البيانات هذه، تكون البيانات في كل صف كائن JSON مع ضبط الموضع في خصائص خط الطول وخط العرض، وبالتالي فإن الدالة التي تقدّمها إلىgetPosition
هيd => [parseFloat(d.longitude), parseFloat(d.latitude)]
. - تحدّد الخاصية
getRadius
نطاق كل عنصر بالأمتار. في هذه الحالة، يتم ضبط النطاق الجغرافي علىd => parseInt(d.capacity)
الذي يضبط حجم نقاط البيانات استنادًا إلى سعة كل محطة. - يحدِّد
stroked
ما إذا كانت نقاط البيانات المعروضة يتوسطها حواف خارجية. - تضبط
getFillColor
لون تعبئة كل نقطة بيانات كرمز لون نموذج أحمر أخضر أزرق. - تضبط
getLineColor
لون خط كل نقطة بيانات كرمز لون نموذج أحمر أخضر أزرق. - يضبط
radiusMinPixels
الحد الأدنى لعرض البكسل لكل نقطة بيانات. أثناء تكبير المستخدمين وتصغيرهم، يغيّر المنصة.gl حجم مقياس نقاط البيانات تلقائيًا للحفاظ على التمثيل البصري مرئيًا بوضوح على الخريطة. يسمح لك هذا الموقع بالتحكم في مدى حدوث هذا الحجم. - يضبط
radiusMaxPixels
الحد الأقصى لعرض البكسل لكل نقطة بيانات.
const layerOptions = {
id: 'scatter-plot',
data: './stations.json',
getPosition: d => [parseFloat(d.longitude), parseFloat(d.latitude)],
getRadius: d => parseInt(d.capacity),
stroked: true,
getFillColor: [255, 133, 27],
getLineColor: [255, 38, 27],
radiusMinPixels: 5,
radiusMaxPixels: 50
};
- إنشاء مثيل من class.gl's
ScatterplotLayer
:
const scatterplotLayer = new ScatterplotLayer(layerOptions);
بعد إكمال هذا القسم، يجب أن يظهر الرمز كما يلي:
import { ScatterplotLayer } from '@deck.gl/layers';
const googleMapsAPIKey = 'YOUR API KEY';
loadJSAPI();
function runApp() {
const map = initMap();
const layerOptions = {
id: 'scatterplot',
data: './stations.json',
getPosition: d => [parseFloat(d.longitude), parseFloat(d.latitude)],
getRadius: d => parseInt(d.capacity),
stroked: true,
getFillColor: [255, 133, 27],
getLineColor: [255, 38, 27],
radiusMinPixels: 5,
radiusMaxPixels: 50
};
const scatterplotLayer = new ScatterplotLayer(layerOptions);
}
5. تطبيق التمثيل البصري على الخريطة
يمكنك الآن تطبيق مثيل ScatterplotLayer
على الخريطة باستخدام الفئة GoogleMapsOverlay
، والتي تستخدم واجهة برمجة تطبيقات JavaScript لـ "خرائط Google"OverlayView
لإدخال سياق WebGL على الخريطة.
وبعد الانتهاء من ذلك، يمكنك تمرير أي من طبقات العرض المرئي للمنصة.gl's إلى GoogleMapsOverlay
، مما يؤدي إلى عرض الطبقة ومزامنتها مع الخريطة.
لتطبيق ScatterplotLayer
على الخريطة، اتبع الخطوات التالية:
- استيراد سطح الشبكة.gl's
GoogleMapsOverlay
:
import { GoogleMapsOverlay } from '@deck.gl/google-maps';
- أنشئ مثيلًا للصف
GoogleMapsOverlay
وانسخه المثيلscatterplotLayer
الذي أنشأته سابقًا في السمةlayers
من العنصر:
const googleMapsOverlay = new GoogleMapsOverlay({
layers: [scatterplotLayer]
});
- تطبيق التراكب على الخريطة:
googleMapsOverlay.setMap(map);
بعد إكمال هذا القسم، يجب أن يظهر الرمز كما يلي:
import { GoogleMapsOverlay } from '@deck.gl/google-maps';
import { ScatterplotLayer } from '@deck.gl/layers';
const googleMapsAPIKey = 'YOUR API KEY';
loadJSAPI();
function runApp() {
const map = initMap();
const layerOptions = {
id: 'scatter-plot',
data: './stations.json',
getPosition: d => [parseFloat(d.longitude), parseFloat(d.latitude)],
getRadius: d => parseInt(d.capacity),
stroked: true,
getFillColor: [255, 133, 27],
getLineColor: [255, 38, 27],
radiusMinPixels: 5,
radiusMaxPixels: 50
};
const scatterplotLayer = new ScatterplotLayer(layerOptions);
const googleMapsOverlay = new GoogleMapsOverlay({
layers: [scatterplotLayer]
});
googleMapsOverlay.setMap(map);
}
ارجع إلى متصفحك، حيث من المفترض أن ترى تمثيلاً بصريًا رائعًا لجميع محطات Citi Bike في مدينة نيويورك.
6. تهانينا
تهانينا. لقد أنشأت تمثيلاً بصريًا ضخم الحجم للبيانات لمدينة "سيتي بايك" في مدينة نيويورك من خلال "منصة خرائط Google" ومنصة سطح المكتب.gl.
مزيد من المعلومات
تتيح لك واجهة برمجة تطبيقات JavaScript لـ "خرائط Google" الوصول إلى جميع الميزات التي تقدّمها منصّة "خرائط Google" للويب. اطّلِع على مزيد من المعلومات عن كيفية استخدام "منصة خرائط Google" على الويب بالاطّلاع على الروابط التالية:
- مستندات واجهة برمجة تطبيقات JavaScript للخرائط
- منصة "خرائط Google" 101: درس تطبيقي حول ترميز JavaScript
يوفّر منصّة Chromebase.gl العديد من طبقات عرض البيانات التي يمكنك استخدامها لعرض البيانات للمستخدمين. اطّلِع على مزيد من المعلومات عن استخدام Chromebase.gl باستخدام واجهة برمجة تطبيقات JavaScript للخرائط من خلال الاطّلاع على الروابط التالية: