أكثر

كيف يمكن تغيير حجم صور GIS النقطية بشكل صحيح لعرض بكسل معين؟


أعمل على ETOPO1 ، ملف 466 ميغابايت ، وأريد الانتقال إلى SRTM (حوالي 20 غيغابايت من Earth). يتضمن سير العمل الخاص بي عدة خطوات معالجة تستغرق وقتًا طويلاً ، لذلك أرغب بشدة في العمل على الحد الأدنى من البيانات النقطية. عادةً ما تريد أن تأخذ من 10.000 إلى 100.000 بكسل نقطية لعرض نظم المعلومات الجغرافية لتقليلها إلى عرض 1000 بكسل تقريبًا ، مثل خريطتي النهائية.

كيف يمكن تغيير حجم ملف GIS النقطي بشكل صحيح إلى عرض معين عبر الجهاز؟ (يفضل جدال)

يجب أن تحافظ على قيم z السلبية والموجبة بدقة.


ملحوظة: لقد جربت بالفعل ما يلي ...

  • ا & قتصاص: لاقتصاص منطقة insterest باستخدامgdal_translate -projwin $ (WEST) $ (شمال) $ (شرق) $ (جنوب) ETOPO1_Ice_g_geotiff.tif crop.tmp.tif، لا يزال يعطيني ملفات أكبر من أن تصل إلى 50 مرة لمعالجة أبطأ بمقدار 50 مرة.
  • تغيير الحجم في وقت مبكر: يؤدي تغيير الحجم مبكرًا باستخدام Imagemagick + إعادة حقن بيانات GIS الوصفية للمعالجات التالية إلى تدمير القيم السلبية (الارتفاعات تحت مستوى سطح البحر تصبح 0 م).

بالنسبة لمنطقة مثل WEST = -5.0 NORTH = 51.0 EAST = 10 SOUTH = 41 ، العرض المطلوب 1000 بكسل ، الارتفاع غير معروف ، استخدم:

gdalwarp -te -5 41 10 51 -ts 1000 0 input.tif output.tif

أو :

gdalwarp-of GTiff -s_srs epsg: 4326 -t_srs epsg: 4326 -te -5 41 10 51 -ts 1000 0 input.tif output.tif

بدلاً من gdal_translate ، قم بقص الصورة باستخدام gdalwarp -تس اختيار :

-ارتفاع العرض: تعيين حجم ملف الإخراج بالبكسل والخطوط. إذا تم تعيين العرض أو الارتفاع على 0 ، فسيتم تخمين هذا البعد من الدقة المحسوبة. لاحظ أنه لا يمكن استخدام -ts مع -tr.

-te xmin ymin xmax ymax: تعيين النطاقات الجغرافية المرجعية لملف الإخراج المراد إنشاؤه (في SRS الهدف [عادةً بالدرجات العشرية]).

مع-ts 1000 0يمكنك ضبط عرض الإخراج على 1000 بكسل المطلوب وسيقوم gdalwarp بحساب الارتفاع تلقائيًا.


تحديد موضع النقرة على النقطية في النشرة ، في R.

أنا أرسم خطوطًا نقطية كبيرة لـ Lat-lon NetCDF على خريطة نشرة R باستخدام shinydashboard. عندما أنقر على الخريطة ، تظهر نافذة منبثقة وتعرض الصفوف والعمود وموضع خطوط العرض وقيمة النقطة النقطية التي تم النقر عليها. (انظر التعليمات البرمجية القابلة لإعادة الإنتاج أدناه)

المشكلة هي أنني أواجه تحولًا في البيانات النقطية إذا كانت البيانات النقطية كبيرة بدرجة كافية. على سبيل المثال ، قمت هنا بالنقر فوق نقطة يجب أن يكون لها قيمة ، ولكن النتيجة هي أن النقطة المحددة هي النقطة المذكورة أعلاه.

أعتقد أن هذا له علاقة بحقيقة أن الخطوط النقطية المستخدمة في النشرة متوقعة ، في حين أن البيانات الأولية التي أستخدمها لتحديد النقاط هي Lat-Lon ، حيث يتم إرجاع النقطة التي تم النقر عليها كـ Lat-Lon بواسطة المنشور. لا يمكنني استخدام الملف المسقط (العمق) لأن وحداته بالأمتار وليس بالدرجات! حتى لو حاولت إعادة قذف تلك العدادات إلى درجات ، فقد حصلت على وردية.

فيما يلي مثال أساسي قابل للتشغيل عن الكود:

كيف يمكنني تحديد النقاط بشكل صحيح ، إذا كانت البيانات النقطية كبيرة؟

تحرير: أردت أيضًا تقديم بعض الروابط الإضافية (ربما) للوثائق أو الأسئلة ذات الصلة:


في Java ، باستخدام javax.imageio ، يمكنك فعل شيء كالتالي:

ستحتاج إلى تحويل جدول الألوان لاستخراج قيم RGB. هذه تبدو وكأنها 8 بت لكل قناة قيم RGB بدون ألفا. يمكن أن تبدو الطريقة

أيضًا ، ستحتاج إلى تنفيذ طرق لفك تشفير البيانات وفك ضغطها بالإضافة إلى طريقة للحصول على قيمة (فهرس اللون) في موضع معين من البيانات غير المضغوطة.

إذا لم يكن لديك أي وثائق ، فإن طريقة فك الضغط على وجه الخصوص تتطلب بعض الهندسة العكسية. بالنظر إلى البيانات التي تم فك ترميزها من هذين المثالين ، فمن المحتمل أن تكون بعض القيمة المشفرة بطول التشغيل تستخدم بايت ويدث. هناك العديد من متغيرات RLE ، لم أتمكن من اشتقاق بيانات الصورة التي تبدو ذات مغزى بالنسبة لي ، لكن ليس لدي أي معرفة بالقصد من بيانات الصورة ، لذلك قد لا أتمكن من التعرف على البيانات غير المضغوطة بشكل صحيح.

شيء واحد أدركته بالنسبة للمثال الأول هو أن البيانات بطول 1600 بت. بالنظر إلى عرض الصورة وارتفاعها 40 على التوالي وعمق اللون 1 بت ، يمكن أيضًا أن يكون هذا غير مضغوط ، على الرغم من أن XML يقول أنه سيتم ضغطه.


يمكنك أيضًا استخدام background-size: round لها معنى مع التكرار:

سيؤدي هذا إلى ضبط عرض الصورة بحيث تناسب عددًا كاملاً من المرات في منطقة تحديد موضع الخلفية.

مذكرة إضافية
إذا كان الحجم الذي تحتاجه هو حجم البكسل الثابت ، فلا يزال من الذكاء تغيير حجم الصورة الفعلية فعليًا. هذا لتحسين جودة تغيير الحجم (نظرًا لأن برنامج الصور الخاص بك يقوم بعمل أفضل من المتصفحات) ، ولحفظ النطاق الترددي إذا كانت الصورة الأصلية أكبر مما يتم عرضه.


يمكنك استخدام صورة المحاصيل باستخدام الكود التالي الذي يمكن أن يحل مشكلتك.

الطريقة أعلاه تفعل postScalling للصورة قبل القص ، حتى تتمكن من الحصول على أفضل نتيجة مع الصورة التي تم اقتصاصها دون الحصول على خطأ OOM.

لمزيد من التفاصيل يمكنك الرجوع إلى هذه المدونة

أرسلني زميلي في العمل للتو إلى واجهة برمجة تطبيقات Android هذه. انظر الصورة المصغرة

إنها تقوم بتغيير الحجم والاقتصاص من أجلك.

إذا كان الرمز الخاص بك يختلف عن المثال ، فسيتعين عليك نشره للحصول على مساعدة دقيقة. خلاف ذلك ، بناءً على السجل فقط - إليك إجابة:

في المثال الذي تستخدمه ، يقوم المطور بقص صورة في مجلد موارد تطبيقه (والتي قد تكون صغيرة نسبيًا للبدء) إلى صورة نقطية بحجم 300 × 300. أولاً ، حاول اقتصاص صورة ذات حجم أصغر في تطبيقك ، إلى حجم إخراج أصغر ، لمعرفة ما إذا كانت هناك مشكلة في الرمز ، أو إذا كنت تستخدم صورة كبيرة جدًا بالنسبة إلى الكود أو الجهاز.

نظرًا لأنك تقول الصورة النهائية التي تقوم بقصها أكبر من الشاشة ، فمن المحتمل أن تكون هذه هي المشكلة ، وأنت تواجه تحديًا أساسيًا لاستخدام الصور النقطية في Android. حجم ملف الصورة النقطية هو دالة لعرض البكسل مضروبًا في الارتفاع - فهي تكبر بسرعة.

يمكنك حل هذه المشكلة عن طريق البحث عن أجزاء أخرى من السجل الخاص بك ، مثل "حجم الصورة النقطية يتجاوز ميزانية VM" وستجد العديد من سلاسل الرسائل في stackoverflow والتي ستساعدك ، مثل هذا.

يمكنك حلها باستخدام خيارات الصورة النقطية و inSampleSize ، وتقنيات أخرى.


هذا الخيار يحافظ على مدى الخريطة ثابتًا. تم تحديد الحدود الجغرافية للخريطة - الإحداثيات العلوية والسفلية واليسرى واليمنى - تحديدًا. يجب أن تكون هذه القيم في وحدات الخريطة.

هناك ست طرق يمكنك من خلالها تعيين مدى ثابت:

  • المدى الحالي لإطار البيانات
  • المدى المدمج لكل المعالم في طبقة معينة
  • المدى المدمج لكل المعالم في طبقة معينة مرئي في نطاق الخريطة الحالي
  • المدى المدمج لكل المعالم المحددة في طبقة معينة
  • المدى المدمج لجميع الأشكال الرسومية المحددة التي ترسمها داخل إطار البيانات أو أي منها (بمعنى آخر ، في عرض البيانات أو في إطار بيانات مركّز) (يجب تحديد الرسم أو الرسومات التي تريد استخدامها لتحديد مدى إطار البيانات بطريقة أخرى ، لن يتوفر خيار مخطط تفصيلي للرسم (الرسومات) المحدد.)
  • مستطيل محدد بواسطة إحداثيات معينة توفرها

إذا قمت بتعيين المدى الثابت أثناء عرض البيانات وكانت نسبة العرض إلى الارتفاع (الارتفاع / العرض) لإطار عرض البيانات مختلفة عن نسبة العرض إلى الارتفاع لإطار البيانات في تخطيط الصفحة ، فسيتم التقاط ارتفاع إطار البيانات وعرضه في تخطيط الصفحة لمطابقة جانب عرض البيانات. إذا كنت تنوي إنشاء مخطط خريطة باستخدام مدى ثابت ، فيجب عليك تعيين المدى الثابت أثناء وجودك في عرض التخطيط.

التنقل في الخريطة مقيد لإطار البيانات هذا. لا يمكنك تحريك أو تكبير أو استخدام الإشارات المرجعية. إذا اخترت هذا الخيار ، فلن تتوفر أدوات وأوامر التنقل المناسبة في الخريطة. إذا قمت بتغيير حجم إطار البيانات في تخطيط الصفحة ، فسيتغير مقياس الخريطة للحفاظ على المدى ثابتًا.

إذا قمت بتغيير حجم إطار البيانات في تخطيط الصفحة ، فسيتغير مقياس الخريطة. لا تتغير المنطقة الجغرافية المعروضة على الخريطة كما هو موضح أدناه:


يمكنك الحصول على الصورة برمجيًا والتحقق من الأبعاد باستخدام جافا سكريبت.

يمكن أن يكون هذا مفيدًا إذا لم تكن الصورة جزءًا من الترميز.

clientWidth و clientHeight هما خصائص DOM تعرض الحجم الحالي في المتصفح للأبعاد الداخلية لعنصر DOM (باستثناء الهامش والحد). لذلك في حالة عنصر IMG ، سيحصل هذا على الأبعاد الفعلية للصورة المرئية.

أيضًا (بالإضافة إلى إجابات ريكس وإيان) هناك:

توفر هذه ارتفاع وعرض ملف الصورة نفسه (بدلاً من عنصر الصورة فقط).

إذا كنت تستخدم jQuery وتطلب أحجام صور ، فعليك الانتظار حتى يتم تحميلها وإلا ستحصل على أصفار فقط.

أعتقد أن تحديث هذه الإجابات مفيد لأن أحد أفضل الردود التي تم التصويت عليها يقترح استخدام clientWidth و clientHeight ، والذي أعتقد أنه قد عفا عليه الزمن الآن.

لقد أجريت بعض التجارب مع HTML5 ، لمعرفة القيم التي يتم إرجاعها بالفعل.

بادئ ذي بدء ، استخدمت برنامجًا يسمى Dash للحصول على نظرة عامة على واجهة برمجة التطبيقات للصور. تنص على أن الطول والعرض هما الارتفاع / العرض المقدم للصورة وأن NaturalHeight و naturalWidth هما الارتفاع / العرض الجوهريان للصورة (وهما HTML5 فقط).

استخدمت صورة فراشة جميلة ، من ملف ارتفاعه 300 وعرضه 400. وجافا سكريبت هذه:


6 إجابات 6

حدد الخيار "استخدام اللوحات الفنية" عند التصدير إذا كنت تريد أن تتطابق الصورة مع أحجام لوح الرسم. بخلاف ذلك ، يتم تصدير الصورة بالحجم المحدد لها ، وليس بحجم لوح الرسم.

قد يرجع الاختلاف الكبير في أحجام الصادرات إلى تأثيرات خطوط المسح مثل الظل المسقط.

أيضًا ، (استنادًا إلى التعليقات أدناه) ، سيكون الملف الذي يتم تصديره بمعدل 300ppi أكبر بكثير من حيث الأبعاد من الملف الذي يتم تصديره بمعدل 72ppi. نظرًا لأن ملفات png لا تخزن بيانات مثل نقطة في البوصة ، يتم تعديل أبعاد الملف لاستيعاب دقة أعلى.

لمطابقة نفس حجم لوح الرسم ، يجب أن تقوم بتصديره بدقة تصل إلى 72ppi. إذا قمت بتغييره إلى 150ppi أو 300ppi (أو أي شيء آخر) ، فإن PNG سيزيد حجمه لكي يتناسب مع هذا القرار

كنت تقوم بالتصدير بدقة عالية (300 نقطة في البوصة). من ناحية أخرى ، فإن "Save for Web" لديه دقة تلقائية تبلغ 72 نقطة في البوصة. حجم PNG 300 نقطة في البوصة أكبر من PNG 72 نقطة في البوصة لأن عدد وحدات البكسل في الصورة قد زاد ، بينما ظل حجم الطباعة كما هو.

من السهل تصدير صورة إلى PNG بأبعاد بكسل محددة إذا كانت الدقة المستهدفة 72 نقطة في البوصة. ما عليك سوى إعداد Artboard لتحديد أبعاد البكسل والتصدير مع تحديد "Use Artboards".

ومع ذلك ، فإن تصدير صورة في Adobe Illustrator إلى تنسيق PNG بأبعاد بكسل محددة باستخدام إعداد دقة عالية (300 نقطة في البوصة) ، يبدو للأسف أنه يتطلب الرياضيات من جانب المستخدم وتغيير الحجم اليدوي المحتمل للعمل الفني. لم أجد أي حل تلقائي لهذا في إعدادات Illustrator ولا عبر الإنترنت.

قسّم عرض البكسل النهائي الذي تريده على 4.166 (باستخدام المثال من السؤال ، 1020 بكسل / 4.166 = 244.839).

في Illustrator ، عيّن تفضيلات الوحدة العامة على "البكسل".

قم بإنشاء لوحة فنية فارغة بأبعاد البكسل المطلوبة النهائية (في هذا المثال ، 1020 بكسل × 100 بكسل) أو قم بتغيير حجم لوحة فنية موجودة إلى أبعاد البكسل النهائية المطلوبة.

مع الاحتفاظ بالنسب مؤمنة ، قم بتغيير عرض Artboard إلى حاصل القسمة في الخطوة 2 ، مقربًا لأعلى أو لأسفل إلى رقم صحيح ، حسب الاقتضاء. (في هذا المثال ، سيكون العرض الآن 245 بكسل وسيتغير الارتفاع تلقائيًا بالنسبة إلى العرض إلى 24 بكسل).

أضف عملًا فنيًا إلى Artboard أو قم بتغيير حجم العمل الفني الموجود ليلائم.

تصدير إلى PNG مع تحديد "استخدام اللوحات الفنية" ، باستخدام دقة عالية (300 نقطة في البوصة).

يجب أن تكون النتيجة ملف PNG للصورة بدقة 300 نقطة في البوصة وأبعاد بكسل نهائية مرغوبة (في المثال ، 1020 بكسل × 100 بكسل).

بالمناسبة ، يمثل "4.166" مقدار التكبير الذي يحدث عندما يتم تحويل صورة 72 نقطة في البوصة إلى 300 نقطة في البوصة. إذا قمت بتصدير ملف بتنسيق Illustrator إلى PNG مع إعداد لوح الرسم لأبعاد البكسل المرغوبة النهائية ، ومع تحديد "استخدام اللوحات الفنية" ودقة عالية (300 نقطة في البوصة) ، فإن أبعاد ملف PNG الناتج ستكون أكبر بـ 4.166 مرة من الأبعاد النهائية المطلوبة.

عرض البكسل المحول ، عند 300 نقطة في البوصة / عرض البكسل النهائي المطلوب ، عند 72 نقطة في البوصة = 4.166 (باستخدام المثال ، 4250/1020 = 4.166)


1. انظر إلى التفاصيل الظاهرة في كل من هاتين الصورتين. أي الصورتين أصغر حجمًا؟ ما القرائن التي استخدمتها لتحديد هذا؟ هل من المرجح أن تكون منصة التصوير الخاصة بالصورة الأصغر حجمًا عبارة عن قمر صناعي أم طائرة؟
الجواب هو .

2. إذا كنت ترغب في مراقبة الصحة العامة لجميع الغطاء النباتي فوق مقاطعات البراري الكندية لعدة أشهر ، فما نوع النظام الأساسي وخصائص أجهزة الاستشعار (الدقة المكانية والطيفية والزمانية) التي ستكون أفضل لهذا ولماذا؟
الجواب هو .


4.2.3. مصادر أخرى مفيدة¶

ينتج مشروع طبقة المستوطنات البشرية العالمية (GHSL) معلومات جغرافية مكانية في الوقت المناسب عن الوجود البشري على هذا الكوكب. من خلال استخدام تقنيات استخراج البيانات المكانية ، يجمع المشروع المعلومات مع التحليلات والمعرفة القائمة على الأدلة. يتم عرض المعلومات على شكل خرائط مبنية وخرائط كثافة سكانية وخرائط استيطان. تستفيد GHSL من استخدام البيانات غير المتجانسة مثل صور الأقمار الصناعية وبيانات التعداد والمعلومات الجغرافية الطوعية.

الشكل 4.2.3.1 –الموقع الإلكتروني لطبقة المستوطنات البشرية العالمية ، https://ghsl.jrc.ec.europa.eu/ ¶

طبقة السكان العالمية للمستوطنات البشرية (GHSL-POP) [2] عبارة عن مجموعة بيانات مكانية نقطية تصور توزيع السكان وكثافتهم معبرًا عنها بعدد الأشخاص حسب الخلية. يمكن إنتاج هذه الصور من خلال تفصيل البيانات المكانية الإدارية أو التعداد في الخلايا. يتم التعبير عن القيم بالأرقام العشرية (Float) وتمثل العدد المطلق لسكان الخلية. يستهدف السكان السكنيون الأعوام 1975 و 1990 و 2000 و 2015. ويمكن وصف مجموعات بيانات GHSL-POP من خلال:

  • اسم المنتج: GHS_POP_MT_GLOBE_R2019A
  • نظام الإحداثيات: World Mollweide (EPSG: 54009) ، WGS (EPSG: 4326)
  • الدقة المتاحة: 250 م ، 1 كم ، 9 قوس ثانية ، 30 قوسي

يتم تعريف اصطلاح التسمية لمجموعات بيانات GHSL-POP على أنه ___ (على سبيل المثال GHS_POP_E2015_GLOBE_R2019A_4326_9SS_V1_0 ، هذا هو الإصدار 1 من مجموعة بيانات GHSL-POP لعام 2015 المشار إليها WGS84 بدقة 9 قوس ثانية).

يتم تعيين خلايا NoData كقيمة -200.

بعد اتباع الخطوات الموضحة في الشكل 4.2.3.1 ، ستجد عارض ويب يتخيل مربعات منتجات GHSL-POP. في هذه المرحلة ، يمكنك النقر فوق مربعات إحاطة المنطقة التي تهمك وتنفيذ تنزيل مجموعة البيانات النقطية.


شاهد الفيديو: Convertir raster en shapefile et calcul de surface. Convert raster in shapefile and area statistic (شهر اكتوبر 2021).