تحليل GPS EXIF للصورة
حوّل الدرجات والدقائق والثواني التي سجّلتها الكاميرا إلى إحداثيات عشرية تفهمها الخريطة، مثل 40.446333333333 و-79.982333333333. يحدد الحرف N أو S أو E أو W الإشارة، فيخرج الجنوب والغرب بقيم سالبة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- خط العرض
- 40, 26, 46.8
- مرجع خط العرض
- N
- خط الطول
- 79, 58, 56.4
- مرجع خط الطول
- W
- خط العرض
- 40.4463333333
- خط الطول
- -79.9823333333
- خط العرض (د/ق/ث)
- 40, 26, 46.8
- خط الطول (د/ق/ث)
- 79, 58, 56.4
غالبا ما تخزّن بيانات الصورة الوصفية الموقع في أربعة وسوم GPS EXIF منفصلة بدلا من الإحداثيات العشرية المألوفة. يستقبل هذا المحلل درجات ودقائق وثواني خطي العرض والطول مع حرفي المرجع، ويتحقق من القيم الخام، ثم يعيد إحداثيين عشريين بإشارتيهما. وبذلك تحصل فرق التطوير والأرشفة والتحقيق على خطوة تحويل حتمية يمكن وضعها بعد قارئ EXIF مباشرة. ينتج الشمال والشرق قيما موجبة، بينما ينتج الجنوب والغرب قيما سالبة.
اربط وسوم GPS EXIF الخام بحقول الإدخال
يمثل EXIF موقع التقاط الصورة بواسطة GPSLatitude وGPSLatitudeRef وGPSLongitude وGPSLongitudeRef. تعيد مكتبة EXIF عادة الوسمين الأول والثالث في صورة ثلاثة أرقام مرتبة على هيئة درجات ودقائق وثوان. لا تضع إشارة سالبة داخل قيم DMS، لأن حرف المرجع هو الذي يحدد الإشارة.
تُوحّد الأحرف الصغيرة إلى أحرف كبيرة. يجب أن تحتوي كل مصفوفة على ثلاثة أرقام منتهية بالضبط. يجب أن تكون الدقائق والثواني صفرا أو أكثر وأقل من ستين.
لا يجوز أن تتجاوز درجات العرض تسعين ولا درجات الطول مئة وثمانين؛ وعند الحد الأقصى يجب أن تكون الدقائق والثواني صفرا. تكشف هذه الفحوص البيانات التالفة قبل دخولها إلى خريطة أو قاعدة بيانات أو فهرس جغرافي. تتوقع الأداة وسوما مستخرجة مسبقا ولا تفك ترميز ملف الصورة نفسه، لذلك استخدمها بعد قارئ EXIF في تطبيقك.
افهم التحويل والتحقق من أحرف المرجع
يحسب المحلل لكل محور مقدارا بجمع الدرجات والدقائق مقسومة على ستين والثواني مقسومة على ثلاثة آلاف وستمئة. ثم يطبق الاتجاه: يحافظ N على خط عرض موجب ويجعل S خط العرض سالبا، ويحافظ E على خط طول موجب ويجعله W سالبا. يمنع ذلك مرجعا تالفا من نقل الصورة إلى الجانب الآخر من خط الاستواء أو خط الزوال الرئيسي.
تتضمن الاستجابة أحرف المرجع الموحدة ومصفوفات DMS المتحقق منها إلى جانب الإحداثيين العشريين.
استخدم إحداثيات الصور العشرية بأمان
بعد التحويل يمكنك كتابة الإحداثيات في GeoJSON، أو عرضها على خريطة، أو فهرستها للبحث حسب القرب، أو مقارنتها بسجلات مواقع أخرى. يسهل الاحتفاظ بالمراجع الموحدة ومصفوفات DMS مراجعة عمليات الترحيل. تعامل مع الوسوم المفقودة أو غير الصالحة بوصفها أخطاء في جودة البيانات، ولا تستبدلها بالصفر، لأن الموقع صفر، صفر موجود فعلا.
يرفض المحلل الأرقام غير المنتهية والمصفوفات الناقصة والمكونات الخارجة عن الحدود والنقاط المستحيلة وراء القطبين أو خط الزوال المقابل. ولا يؤكد أن الكاميرا كانت في الموقع المبلغ عنه، ولا يصحح اختلافات المراجع الجيوديسية، ولا يقيّم الخصوصية. قبل نشر الصور، تحقّق من ملاءمة كشف الإحداثيات الدقيقة.
حالات الاستخدام
توحيد أرشيف الصور
حوّل مصفوفات GPS EXIF المستخرجة إلى إحداثيات عشرية متسقة قبل فهرسة مجموعة الصور.
وضع الصور على خريطة
حوّل بيانات الكاميرا الوصفية إلى خط عرض وطول بإشارتيهما كما تتطلب الخرائط ومسارات GeoJSON.
التحقق من مسار استيراد EXIF
ارفض أحرف المرجع التالفة ومكونات DMS المستحيلة قبل تخزين الموقع في بيئة الإنتاج.
الأسئلة الشائعة
هل تقرأ هذه الأداة ملف الصورة؟
لا. إنها تحوّل وسوم GPS EXIF التي سبق أن استخرجتها باستخدام قارئ EXIF.
ما أحرف المرجع الصالحة؟
يقبل خط العرض N أو S، ويقبل خط الطول E أو W، بغض النظر عن حالة الحرف.
كيف تُحوّل قيم DMS؟
المقدار هو الدرجات مضافا إليها الدقائق مقسومة على 60 والثواني مقسومة على 3600. تجعل S وW النتيجة سالبة.
هل يمكن أن تساوي الدقائق أو الثواني 60؟
لا. يجب أن تكون صفرا أو أكثر وأقل من 60. طبّع قيم الحمل قبل إرسالها إلى المحلل.
هل أضع إشارة سالب للجنوب أو الغرب؟
لا. أدخل الدرجات والدقائق والثواني أرقامًا موجبة، واترك حرف المرجع يحدد الاتجاه: الحرف S يجعل خط العرض سالبًا، والحرف W يجعل خط الطول سالبًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/exif-gps-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}'const res = await fetch("https://api.kit.forhosting.com/image/exif-gps-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-gps-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-gps-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-gps-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_gps_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 15 |
max_megapixels | 12 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
اربط وسوم GPS EXIF الخام بحقول الإدخال
أرسل هاتين المصفوفتين في latitude وlongitude، وأرسل حرفي الاتجاه في latitude_ref وlongitude_ref.
افهم التحويل والتحقق من أحرف المرجع
تُقرّب النتيجة إلى اثنتي عشرة منزلة عشرية للحصول على JSON مستقر. التحقق من المرجع صارم عمدا؛ فلا يقبل latitude_ref إلا N أو S، ولا يقبل longitude_ref إلا E أو W. يعيد أي حرف آخر أو كلمة أو نص فارغ أو مرجع تابع للمحور الخطأ قيمة invalid_input بدلا من التخمين. جميع العمليات حسابية حتمية بلا شبكة أو ساعة أو عشوائية أو نموذج خارجي، ولذلك تتصرف الدالة بالطريقة نفسها في المتصفح وAPI والاختبارات وعمليات تكامل JavaScript دون اتصال.
استخدم إحداثيات الصور العشرية بأمان
احتفظ بالزوج معا وانتبه إلى ترتيب المحورين: تعرض هذه الاستجابة latitude قبل longitude، بينما تعكس بعض صيغ الأشكال الهندسية هذا الترتيب. في المسار الآلي، لا تحلل إلا عند وجود الوسوم الأربعة، وتعامل مع invalid_input كسجل مرفوض، واحفظ مصدر الصورة. ينفذ المتصفح الحساب محليا، وتكلف أتمتة API مقدار $0.002 لكل عنصر ناجح.
أسئلة تقنية
ما تكلفة استدعاء API؟
تكلف كل استجابة ناجحة $0.002 لكل عنصر. ويمكن للمتصفح تنفيذ الحساب الحتمي نفسه محليا.