المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : أبحث عن طريقة آلية لتحويل مجموعة لجداول إلى راستر



محمد فواز
05-19-2008, 12:47 PM
السلام عليكم ورحمة الله وبركاته
عندي قاعدة بيانات أكسس تحتوي على قرابة 300 جدول وكل جدول يحتوي على عمودين للإحداثيات وعمود فيه قيمة الهطول المطري في سنة معينة
والمطلوب تحويل كل جدول إلى راستر
أريد إنشاء سكريبت أو برنامج صغير بحيث يحول هذه الـ 300 جدول بشكل مباشر إلى 300 راستر
هل يوجد لديكم حل ؟؟

مشكورين سلف

محمد ابريك كروش
05-22-2008, 05:34 PM
السلام عليكم ورحمة الله وبركاته
ان برنامج الماب انفو وكذلك الارك افيو يمكن بها العمل علي مجموعة كبيرة من الملفات في ان واحد فعند اجراء كل عملية يتم الضغط علي الزر شفت
وتحدبد جميع الملفات كمجموعه فتظهر جميعها باللون الازرق وبالضغط علي الزر اوكي تنفتح كل الملفات في ان واحد ..هذا لا يعني انه يمكن تحويل الداتا الي راستير في آن واحد انما ذلك يختصر الوقت والجهد الي حد كبير
والله اعلم

محمد فواز
05-25-2008, 08:48 AM
شكراً على ردك أخي الكريم
ولكنني أحاول أن أنفذ المطلوب برمجياً وليس يدوياً وللأسف خبرتي البرمجية ضعيفة فأرجو من أصحاب الخبرة مساعدتي

جمعة داود
05-25-2008, 09:37 AM
في المشاركة بعنوان: مركز GIS بجامعة هارفارد في الرابط:
http://www.gisclub.net/vb/showthread.php?t=2822

يوجد في هذا الموقع ملف بصيغة pdf يحمل لك الاجابة علي سؤالك ويشرح بالتفصيل و الصور كيف تحول جدول بيانات الي طبقة ! الشرح مع أنه بالانجليزية الا أنه بسيط و ممتع ويمكنك تنفيذه بسهوله. رابط الملف هو:
http://isites.harvard.edu/fs/docs/icb.topic109643.files/Table_with_lat_lon_to_Shapefile.pdf

بالتوفيق

محمد فواز
05-25-2008, 09:49 AM
شكراً لردك الكريم د. جمعة

طريقة تحويل الجدول إلى طبقة معروفة وسهلة ولكن ما أبحث عنه هو كيفية تحويل هذه العمليات البسيطة إلى ماكرو ثم وضع هذا الماكرو ضمن حلقة For بحيث يتم تحويل الـ 300 جدول بشكل مباشر إلى طبقات

لأنني لو قمت بتنفيذ المطلوب يدوياً لإستغرق الأمر زمناً طويلاً جداً وقد لا يخلو هذا التنفيذ من أخطاء بشرية

مشكورين لردودكم القيمة
ولكنني ما زلت أبحث عن الحل

محمد ابريك كروش
05-26-2008, 05:48 PM
الاخ الفاضل
السلام عليكم ورحمة الله
حسب علمي ان ماكرو يمكن تطبيقة علي مئات الصور ولكن يقوم بتحليل واحد فقط اي اجراء تحليل او وظيفة واحدة فقط (مثلا يمكن استخدام ماكرو لقطع منطقة الدراسة من مرئية كبيرة" اي يطبق الوظيفة windows or image subsit " ولكن لا يمكن اجراء عدة وظائف معقدة متتالية في ان واحد واحد مثلما ترغب انت... علي العموم ان لم تجد طريقة فأن العمل اليدوي لا يستغرق وقت طويل كما ضننت فهناك تسهيلات يمكن استخدامها بحيت تقوم باجراء كل خطوه مع جميع ملفاتك في ان واحد..انا عن نفسي قمت بنفس العمل مرتين مره بأستخدام الارك فيو ومره اخري بأستخدام الماب انفو مع 230 ملف في ان واحد
تمنياتي لك بالتوفيق
والسلام عليكم

محمد فواز
06-01-2008, 09:13 AM
بسم الله الرحمن الرحيم

تحياتي أخ محمد

من خلال VBA يمكنك تنفيذ أي سلسلة من الأوامر مهما بلغت من التعقيد
من ملفات الـ Help وجدت الأكواد التالية


كود لإنشاء شيب فايل جديد
Public Function CreateShapefile(sPath As String, sName As String) As IFeatureClass ' Dont include .shp extension

' Open the folder to contain the shapefile as a workspace
Dim pFWS As IFeatureWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pFWS = pWorkspaceFactory.OpenFromFile(sPath, 0)

' Set up a simple fields collection
Dim pFields As IFields
Dim pFieldsEdit As IFieldsEdit
Set pFields = New Fields
Set pFieldsEdit = pFields

Dim pField As IField
Dim pFieldEdit As IFieldEdit

' Make the shape field
' it will need a geometry definition, with a spatial reference
Set pField = New Field
Set pFieldEdit = pField
pFieldEdit.Name = "Shape"
pFieldEdit.Type = esriFieldTypeGeometry

Dim pGeomDef As IGeometryDef
Dim pGeomDefEdit As IGeometryDefEdit
Set pGeomDef = New GeometryDef
Set pGeomDefEdit = pGeomDef
With pGeomDefEdit
.GeometryType = esriGeometryPolygon
Set .SpatialReference = New UnknownCoordinateSystem
End With
Set pFieldEdit.GeometryDef = pGeomDef
pFieldsEdit.AddField pField

' Add another miscellaneous text field
Set pField = New Field
Set pFieldEdit = pField
With pFieldEdit
.Length = 30
.Name = "MiscText"
.Type = esriFieldTypeString
End With
pFieldsEdit.AddField pField

' Create the shapefile
' (some parameters apply to geodatabase options and can be defaulted as Nothing)
Dim pFeatClass As IFeatureClass
Set pFeatClass = pFWS.CreateFeatureClass(sName, pFields, Nothing, _
Nothing, esriFTSimple, "Shape", "")

Set CreateShapefile = pFeatClass
End Function



كود لإضافة شيب فايل إلى المشروع

Public Sub AddLayerFileToMap()
Dim filePath As String
filePath = "D:\arcgis\arcexe83\ArcObjects Developer Kit\samples\data\USA\states.lyr"
Dim pGxLayer As IGxLayer
Dim pGxFile As IGxFile

Set pGxLayer = New GxLayer
Set pGxFile = pGxLayer
pGxFile.Path = filePath
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
pMxDoc.FocusMap.AddLayer pGxLayer.Layer
End Sub




وبالتالي يمكن تحويل أي عملية تقوم بها يدوياً ضمن ArcMap أو ArcCataloge إلى كود برمجي تنفذه بكبسة زر

من خلال تعديل الكود السابق ودمجه يمكن مثلاً إنشاء أي عدد تريد من الـ shapefiles وإضافتها إلى Arcmap بشكل آلي

والآن أنا أبحث عن الكود المقابل لأمر Add XY data
وكود لتحويل إلى راستر
وهكذا

بهجت يوسف الجعافرة
06-01-2008, 10:28 AM
بسم الله
السلام عليكم
قد يكون الاضافة بطريقة البرنامج تأخذ وقت اقل من عمل كود
ثم فحصه ثم اضافتة البرنامج

محمد فواز
06-01-2008, 11:39 AM
بسم الله الرحمن الرحيم
تحياتي أخ بهجت

إذا كنت تقصد أن إعداد الكود يتطلب وقت طويل ، والأفضل أن نستغل هذا الوقت في تنفيذ المطلوب يدوياً ، فهذا قد يكون صحيح
وأنا حاليأ أنفذ المطلوب مني يدوياً وهذا سيأخذ على الأقل عمل 5 أيام ولكن إذا أخذت بعين الاعتبار أن هذا العمل مطلوب تكراره كل شهر تقريباَ أي أنني سأمضي ستون يومأ في السنة أقوم بنفس العمل.
بينما في حال نجحت في إعداد برنامج يقوم بتنفيذ المطلوب آلياً فإن إعداد البرنامج وفحصه قد يستغرق 30 يومأ بالتالي أكون قد ربحت 30 يومأ في السنة و 60 يومأ في السنة القادمة وهكذا

فهد المطلق
06-01-2008, 04:21 PM
السلام عليكم اخوي محمد فوزي

سوف ادلو بدلوي حسب ماعرفه فخبرتي بالموضوع 4 شهور


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

بخصوص ربط قاعدة البيانات بالواجهة البرمجية فالامر سهل


برنامج صغير بحيث يحول هذه الـ 300 جدول بشكل مباشر إلى 300 راستر

هنا لم افهم قصدك بأي طريقة تحول هذه البيانات الى راستر بمعنى لبدء ان تشرح لي طريقتك اليدويه في التحويل الى راستر
ثم بعد ذلك أرى كيف استطيع ان اخدمك

هشام عزام
06-01-2008, 06:25 PM
قمت بعمل model من خلال toolbox من قبل وكان ذلك للتحويل من shape file الى raster
ولكن ما زالت مشكلة الكود الخاص ب Add XY data هى المشكلة

محمد فواز
06-02-2008, 08:38 AM
السلام عليكم اخوي محمد فوزي

سوف ادلو بدلوي حسب ماعرفه فخبرتي بالموضوع 4 شهور



بخصوص ربط قاعدة البيانات بالواجهة البرمجية فالامر سهل



هنا لم افهم قصدك بأي طريقة تحول هذه البيانات الى راستر بمعنى لبدء ان تشرح لي طريقتك اليدويه في التحويل الى راستر
ثم بعد ذلك أرى كيف استطيع ان اخدمك


بسم الله الرحمن الرحيم
شكراً لمرورك أخي فهد

ملفات العمل هي
1-قاعدة البيانات تحتوي على 300 جدول كل جدول مكون من حقل ID وحقل كمية الهطول المطري
2-طبقة شيب فايل من نوع Polygon وفيها حقل ID طبعاً هذا الحقل هو حقل الربط بين الطبقة والجداول
بيئة العمل ArcMap
نبدأ العمل بإضافة الطبقة إلى المشروع

الطريقة اليدوية لربط الجدول مع الطبقة وتحويله إلى راستر هي كالتالي
1-من Add Data أضيف الجدول الأول
2-ضغطة يمين على إسم الشيب فايل ثم أختار Join and Relates ثم Join ونختار في هذه الواجهة الطبقة والجدول ونحدد حقل الربط ID ثم OK
3-من Spatial Analyst toolbar اختارConvert ثم Convert feature to raster وأختار الحقل الذي يحوي قيمة الهطول المطري
بهذه الطريقة أكون قد حولت الجدول الأول إلى طبقة من نوع راستر
يجب تكرار هذه العملية لكل الجداول الموجودة

إذا كنت بحاجة إلى أي إيضاحات جديدة فأنا جاهز جداً
ومشكور سلف

محمد فواز
06-02-2008, 08:45 AM
قمت بعمل model من خلال toolbox من قبل وكان ذلك للتحويل من shape file الى raster
ولكن ما زالت مشكلة الكود الخاص ب Add XY data هى المشكلة

بسم الله الرحمن الرحيم
تحياتي أخ هشام

يمكنك إستخدام الأمر Make XY Event Layer الموجود ضمن
ArcToolbox >>Data Management tools >>Layers and Table Views
وذلك بسحبه وإفلاته ضمن الموديل الذي أنشاته ولكن تبقى المشكلة أن الموديل ينفذ الأمر مرة واحدة حسب معلوماتي

بهجت يوسف الجعافرة
06-02-2008, 10:57 AM
بسم الله
السلام عليكم
نعم اذا تكرر الموضوع
فلابد من برمجة ذلك

فهد المطلق
06-02-2008, 11:16 PM
أولا اقولك في البداية تأكد من عدم ويوجد خاصية تقوم بعمل الراستر بشكل اتماتيكي كما تريد
ثانيا أنا بحسب معرفتي المتواضعه جدا بهذا الموضوع لا اتوقع انك تحتاج كود واحد فقط حتى يعمل لك كل هذه العمليه بل محتاج إلى واجهة برمجيه تحمل اضافة النقاط XY وكذلك جلب قاعدة البيانات وهذه المسائلة ان شاء الله بسيطه لكن المعضله في تحويل كود الجدول الى راستر
بمعنى نحن في هذه المرحلة نحتاج الكود المحول الى راستر ثم بعد ذلك يسهل علينا تكرار العمليه

المهم انا دخل على موقع خاص لشركة ESRI يوجد فيه قرابة 800 كود مع أمثله لها يمكنك الاستفادة منها في برمجة أدوات GIS أطلع عليه لعلك تجد ضالتك

http://edndoc.esri.com/arcobjects/8.3/default.asp?url=/arcobjects/8.3/Samples/QuerySamples.asp
وهذه اكواد من هذا الموقع

إضافة طبقة الى الخريطة
http://edndoc.esri.com/arcobjects/8.3/Samples/ArcMap/AddaLayerFiletoMap.htm

اضافة XY

http://edndoc.esri.com/arcobjects/8.3/Samples/Geodatabase/Database%20Tools/Write%20XY%20Values/AddXY.htm

مثال لعمل الراستر
http://edndoc.esri.com/arcobjects/8.3/Samples/Raster/Raster%20Editor/RasterEditor.zip
وكذلك
http://edndoc.esri.com/arcobjects/8.3/Samples/Raster/AddRasterLayerToArcMap.htm
وكذلك
http://edndoc.esri.com/arcobjects/8.3/Samples/Raster/RasterIndexPolys/RasterIndexPolys.zip
لقد حاولت ان اخرج بنتيجه ولكن لم استطع
لكن سوف اسأل لك واحد من المختصين في برمجة نظم المعلومات الجغرافية وأي جديد سوف احصل عليه سوف أوافيك به ان شاء الله

محمد فواز
06-05-2008, 11:33 AM
لكن سوف اسأل لك واحد من المختصين في برمجة نظم المعلومات الجغرافية وأي جديد سوف احصل عليه سوف أوافيك به ان شاء الله

بسم الله الرحمن الرحيم

شكراً على الروابط المفيدة

وبإنتظارك في حال وصلت لأي جديد

محمد فواز
06-05-2008, 12:28 PM
بسم الله الرحمن الرحيم


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

الكارثة الآن أن المدير يطلب تحويل البيانات الشهرية لهذه الجداول أيضاً إلى راستر
أي أن المطلوب 300جدول * 12 شهر = 3600 راستر

الهدف من العمل هو الحصول على الـ trend العام للهطول المطري والحرارة لكل خلية على حدة
والتي ستتم بتطبيق بعض العمليات الحسابية على هذه الطبقات للحصول على المتغيرين a,b لمعادلة y=ax +b والحصول على قيمة R2

لذلك أجد أنه لا بد لي من تنفيذ المطلوب برمجياً وبالتالي حتى الموديل لن ينفعني في هذه المرحلة

وعلى فكرة: يمكن تصدير الموديل إلى VBScript ولكن هذا الكود لم يعمل عند إضافته إلى VBA ولا أدري لماذا

ميلاد احمد
06-08-2008, 12:27 AM
السلام عليكم ورحمة الله وبركاته
يوجد برنامج للتحويل و اسمه FME وامكانيته هائلة و لكني ما زلت من المبتدئين و لا اعرف ان كنت ستجد طلبك فيه.
www.safe.com
تمنياتي بالتوفيق