PDA

View Full Version : مقاله: آموزش برنامه نویسی GIS در .net (قسمت اول)



mahdiii
پنج شنبه 29 مرداد 1388, 04:51 صبح
سلام به همه عاشقان برنامه نویسی.

در کشور ما به ندرت میشه که کسی در مورد برنامه نویسی در قسمت GIS صحبت کنه یا اصلا کمتر کسی هست که بدونه GIS چی هست http://barnamenevis.org/forum/images/-y/35.gif
. اگه یه توضیح ساده با یک مثال ساده بخوام بزنم میگم که عکسهای هوایی و مخصوصا عکسهای ماهواره ای که با اطلاعات توصیفی همراه میشوند و به صورت آماده در می آیند و عملیاتی که بر روی آنها برای بدست آوردن اطلاعات خاص انجام میشود را GIS میگویند. یک نمونه ساده Google Map .

من خودم هیچی از GIS نمیدونستم ......http://barnamenevis.org/forum/images/-y/10.gif
تا اینکه کسی از من خواست تا براش یک سیستم GIS بنویسم
و به جایی رسیدم که در حال حاضر در کشور پیشرفته ترین سیستم GIS رو فکر کنم من دارم، که هسته اصلیش (Engine) و بدنش رو به صورت کامل و با بهترین و آخرین استانداردها از جمله OGC طراحی کردم . چقدر از خودم تعریف میکنم ...اه اه اه http://barnamenevis.org/forum/images/-y/4.gif

حالا میرسیم سر اصل مطلب که آموزش برنامه نویسی GIS هستش ....
برای نوشتن یک سیستم نرم افزاری GIS شما در ابتدا باید هم محیط برنامه نویسی و هم محیط GIS خودتون رو انتخاب کنید.

ولی اگه پیشنهاد من رو بخواین ، برای نوشت یک سیستم GIS خودتون رو اذیت نکنید و با vb.net و یا با C#‎.net کد بزنید.

ما برای نوشتن یک سیستم GIS باید یک Engine GIS برای خودمون داشته باشیم . انتخابها کم هستن تقریبا، که من چند تاشونو نام میبرم : ArcGIS Engine , MapObject , MapGuide , MapServer که من بهترین و راحت ترین رو ArcGIS Engine معرفی میکنم . که خودم بیشتر با این Engine کار کردم . شرکت بسیار بزرگ آمریکایی Esri که در GIS در دنیا بزرگترین هست پکیجی به نام ArcGIS دارد که در اون یک نرم افزار به نام ArcMap هست که بیشترین کاربرد رو داره و این شرکت برای برنامه نویسها چند Dll تهیه کرده که به نام ArcGis Engine معروف هست و با Import این dll ها به مثلا vb.net شما میتوانید شروع به کار کنید .

ولی من پس از چند سال کار کردن و آماده کردن پروژه های بزرگ برای سازمانهای بزرگ دولتی و غیر دولتی کشور و حتی چندین پروژه برون مرزی اینک یک Engine خودم نوشتم که البته کار بسیار مشکلی هم بود ولی مزایای بسیار داره . که من اسمش رو نقشانه گذاشتم که در 2 صورت Win App و Web Base آماده کردم.

ولی من در ادامه آموزشهام vb.net + ArcGIS Engine رو قدم به قدم آموزش میدم.
سعی میکنم دیگه هم از خودم تعریف نکنم در ادامه ....:لبخند:

mahdiii
پنج شنبه 29 مرداد 1388, 05:00 صبح
سلام
ابتدا باید بگم که قصد ندارم اینجا .net آموزش بدم چون آموزشش در اینترنت به زبون فارسی زیاد هست ، من فقط در قسمتهایی که نیاز هست مطالب رو میگم.
زبان برنامه نویسیم که اینجا استفاده میکنم vb هستش.
َArcGIS Engine رو زمانی که شما نصب کنید به صورت اتوماتیک 3 کامپوننت اصلی رو در visual studio نصب میکنه که در این قسمت به توضیح این 3 کنترل که با هم در ارتباط مستقیم هستند میپردازم.

کنترل شماره 1 که اسمش AxMapControl هست اصلی ترین کنترل ArcGIS Engine هست که در واقع کار نمایش فایلهای Vector و raster رو انجام میده .

کنترل شماره 2 که اسمش AXTocControl هست که در واقع نمایش دهنده و قسمت مدیریت لایه هایی است که در کنترل AxMapControl نمایش داده میشود.
شما میتوانید این کنترل را در قسمت properties به کنترل AxMapcontrol فقط با نوشتن نام کنترل AxMapcontrol1 (اسم به صورت پیش فرض) اتصال دهید و با این کار تمام فایلهایی که در AxMapControl شما نمایش داده میشوند به صورت Legend خورده و یا گروپ بندی شده و به صورت لیست شده در کنترل AxTocControl شما نمایش داده میشوند.

کنترل شماره 3 اسمش AxToolbarControl هست. شما میتوانید تمامی امکانات عمومی که در خود ArcMap میباشد رو در اینجا پیاده کنید; مثل Zoom in , zoom out , Pan , Open Layer , Editing و غیره که شما در ابتدا با همان interface این کنترلها را میتوانید بیاورید و از این امکانات بر روی AxMapControl فقط با اتصال این دو کنترل به هم دقیقا مشابه روش قبلی استفاده نمایید.

اگر توانستید این کار را انجام دهید کامنت بزارید تا ببینم اگر مورد استقبال بود در قسمت بعدی سراغ کد نویسیش هم بریم.
اگر جایی چیزی رو نگفتم یا مشکل داری بپرسید که راهنمایی کنم حتما.

راستی من فراموش کردم که بگم که این موارد که گفتم در ورژن 9.0 , 9.1 , 9.2 میباشد و با ورژن 9.3 که مزیتهای زیادی داره هنوز کار نکردم چون دیگه از Engine خودم استفاده میکنم.
منتظر آموزش قسمت بعد باشید البته اگه استقبال بشه و کامنت بزارید.
ممنونم

راستی اگه ArcGIS Engine رو کسی میخواد من دارم ، هم ورژن 9.2 و هم 9.3 .میتونید Email بزنید که براتون بفرستم.
با Email من هم در ارتباط باشید : Mahdi.al@Gmail.com

یوسف کوچولو
پنج شنبه 29 مرداد 1388, 21:17 عصر
ایووووووووووووووووووووووو ووووووووووووووووووووووووو ل خیلی موضوعه جالبیه هر چند تازه کارم ولی دوست دارم در این مورد بیشتر بدونم پس اگه میشه لطف کنید ادامه بدین

mahdiii
پنج شنبه 29 مرداد 1388, 22:20 عصر
سلام.
اول بزارید چند نفر بیان بگن که ما انجام دادیم یا اشکال بگیرن تا ادامه بدم.
تا جاهایی این بحث میبرم جلو که واقعا لذت ببرید.

bakhsat
جمعه 30 مرداد 1388, 18:10 عصر
با سلام
ممنون واقعا بحث جالبیه من که خیلی علاقه مندم امیدوارم این آموزش را ادامه دهید.
:تشویق:

mahdiii
شنبه 31 مرداد 1388, 00:26 صبح
سلام
اگه کسی تونست تا اینجا با ما همراه بشه و این کارارو انجام بده بگه.....
چون ArcGIS Engine رو از هر جایی نمیتونید پیدا کنید.
اگه نصبشم براتون سخته بگید اشکالاتون رو تا براتون بگم.
ولی بسیار در حال اوج گرفتن هست GIS و اگه برنامه نویسیش رو بلد باشید خیلی خوب میتونید پول در بیارید از توش.
منتظرم....

cactoss84
دوشنبه 02 شهریور 1388, 08:04 صبح
سلام من اینکارو کردم البته یه خورده کاملتر و تحت ویندوز حالا میخوام به geodatabase ارتباطش بدم اما نمیدونم چه جوری از کد connection ش استفاده کنم تا open کردن پیش رفتم البته, یه مشکل دیگه هم با setup ساختنش دارم خیلی ممنون میشم اگه کمکم کنین

mahdiii
سه شنبه 03 شهریور 1388, 00:25 صبح
سلام من اینکارو کردم البته یه خورده کاملتر و تحت ویندوز حالا میخوام به geodatabase ارتباطش بدم اما نمیدونم چه جوری از کد connection ش استفاده کنم تا open کردن پیش رفتم البته, یه مشکل دیگه هم با setup ساختنش دارم خیلی ممنون میشم اگه کمکم کنین
سلام.
ببین اگه از خود Add Layer در AxToolbarControl استفاده کنی به راحتی میتونی GeoDB رو هم باز کنی ولی اگه بخوای خودت به صورت دستی باز کنی باید :
از این کد استفاده کنی :

Dim pMasterPropSet As IPropertySet2
Dim pSDEFact As IWorkspaceFactory
Dim pMasterWorkSpace As IWorkspace
Dim pMasterFeatWorkspace As IFeatureWorkspace
Dim pDataset As IDataset
Dim pFeatDataset As IDataset
Dim pFeatureClass As IFeatureClass
Dim pFeatureLayer As IFeatureLayer
Dim pEnumDataset As IEnumDataset


Set pMasterPropSet = New PropertySet
With pMasterPropSet
.SetProperty "Server", "192.168.10.168"
.SetProperty "Instance", "5151/tcp"
.SetProperty "user", "sde"
.SetProperty "password", "sde"
.SetProperty "VERSION", "sde.DEFAULT"
End With

Set pSDEFact = New SdeWorkspaceFactory
Set pMasterWorkSpace = pSDEFact.Open(pMasterPropSet, 0)
If Not pMasterWorkSpace Is Nothing Then
Set pMasterFeatWorkspace = pMasterWorkSpace
Set pDataset = pMasterFeatWorkspace.OpenFeatureDataset("SDE.ChenT EST")
Set pEnumDataset = pDataset.Subsets
Set pFeatureLayer = New FeatureLayer
Set pFeatDataset = pEnumDataset.Next
Do While Not pFeatDataset Is Nothing
If TypeOf pFeatDataset Is IFeatureClass Then
Set pFeatureClass = pFeatDataset
Set pFeatureLayer.FeatureClass = pFeatureClass
MapControl1.AddLayer pFeatureLayer
End If
Set pFeatDataset = pEnumDataset.Next

Loop
End If

MapControl1.ActiveView.Refresh


البته یه فانکشین هم برات پیدا کردم که VBA هستش اگه یه کم آخرشو تغییر بدی کار میکنه


'' openAccessDB: connect to a personal geodatabase
'' connString should be full path to the access database with .mdb extension
'' example "c:\temp\geodata.mdb"
'' FCName the featureClass Name example "Streets"
Public Function AddFeatureClassToMap(connString As String, FCName As String)

On Error GoTo EH

Dim pWS As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory

Set pWorkspaceFactory = New AccessWorkspaceFactory
Set pWS = pWorkspaceFactory.OpenFromFile(connString, 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWS

Dim pFeatureLayer As IFeatureLayer
Dim pFC As IFeatureClass
Set pFC = pFeatureWorkspace.OpenFeatureClass(FCName)
Set pFeatureLayer = New FeatureLayer
Set pFeatureLayer.FeatureClass = pFC
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName

Dim pMxDocument As IMxDocument
Dim pMap As IMap
Set pMxDocument = ThisDocument
Set pMap = pMxDocument.FocusMap
pMap.AddLayer pFeatureLayer
pMxDocument.ActiveView.Refresh

Exit Function
EH:
MsgBox Err.Description, vbInformation, "openAccessWorkspace"
End Function





و دقیقا بگو مشکل Setup ساختنت چیه.

mahdiii
چهارشنبه 04 شهریور 1388, 04:27 صبح
سلام.
یکی از دوستان ایمیل زده بود و سئوال زیر رو پرسیده بود :

salam dost aziz
topic shoma ro didam. jaleb bod. age edame bedid ke ali mishe
man mikhastam ye sistem makanyabi ba shomareh telefon dorost konam. albateh baraye shahr khodam
yani vaghti kasi az telefon sabet zang zad makan on roye naghshe neshon dadeh beshe
mitonid mano rahnami konid. darzemn link dl version 9.3 or 9.2 ArcGIS ro baram befrestid
ba tashakor
Ali


و من هم جوابی که بهش دادم به شرح زیر بود :

Salam dooste aziz.
bebinid avalan be rahati nemitoonid arcGIS Engine ro dl konid 9.2 ro shayad..shayad...shayad betoonid gir biarid vali 9.3 ro ke aslan.
vali age khastid man daram ke 9.2 ro 40 toman va 9.3 ro 80 toman mifoosham.jahaye dige ham shayad dashte bashan vali az man geroontar midan :D
va dar morede in system bayad begam ke shoma bayad baraye shahretoon avaland ke naghsheye oonjaro dashteh bashid va naghshatoonam ettelaate tosifish kamel bashe.
yani bayad tak tak parcelhaye khooneharo dashte bashid rooye mapetoon va be har koodoom az parcelha ham ye ID va yek field shomare telefon dade bashid va bayad barnameye caller id ro ham dashte bashid ke modemetoon zamani ke zang khord shomare telefon ro begire va bad dar liste tosifie naghshatoon begarde va bad oon ro peyda kone va dar rooye naghshe selectesh kone oon parcele marboot be shomare telefon ro.



فتم جالب بود برای شما اینجا بزارم که شاید بهتون کمک کنه و یا شاید یکی از کارهایی که میشه با GIS کرد رو ببینید ، که این کار البته بسیار ساده هستش.
دارم آموزش قسمت بعد رو آماده میکنم که تا اواسط هفته دیگاه اینجا بزارمش.
سعی میکنم آموزشهای دیگم که اینجا قرار میدم کامل تر و بهتر بشه.
البته شما در کامل تر شدن و بهتر شدنش باید لطف کنید و بهم کمک بدین.
منتظر شما هستم.....
متشکر....

cactoss84
چهارشنبه 04 شهریور 1388, 08:08 صبح
ممنون از جوابتون اما من با c# كار ميكنم حالا سعي ميكنم اين كدتونو تغيير بدم , با setup هم مشكلم اينه كه حتما بايد رو سيستم arcgis نصب باشه تا برنامه اجرا شه نميدونم چيكار ميشه كرد!

cactoss84
چهارشنبه 04 شهریور 1388, 09:23 صبح
Set pDataset = pMasterFeatWorkspace.OpenFeatureDataset("SDE.ChenT EST")
تو اين خط "SDE.Chen EST" يعني كدوم قسمت, اسم tabelemone ؟؟
متاسفانه نميتونم كامل به c# تبديلش كنم

mahdiii
چهارشنبه 04 شهریور 1388, 19:46 عصر
ممنون میشم اگه کمکم کنین , در رابطه با ارتباط برنامه با geodatabase مشکل دارم

سلام آقای cactoss84 (http://barnamenevis.org/forum/member.php?u=28322).
ببین در اونجا اسم Table رو از شما میخواد که البته SDE.Tablename به این صورت باید باشد.و در مورد Setup باید بگم که اگه ورژن 9.1 رو داری باید خود ARCGIS رو نصب کنی ولی اگه 9.2 رو داری میتونی Runtime رو نصب کنی.بهم ایمی بزن تا شمارمو بهت بدم که بهتر راهنماییت کنم.
Mahdi.al@gmail.com

mahdiii
پنج شنبه 05 شهریور 1388, 01:14 صبح
دقیقا بخاطر همین مسئله setup و خیلی مسائل دیگه ARC GIS Engine من واسه خودم یه engine نوشتم که چند تا عکس ازش براتون آماده میکنم و میزارم که لذت ببرید.
یه کم سرم شلوغه براتون میزارمش .

sky_in_iran
پنج شنبه 05 شهریور 1388, 16:00 عصر
salam
mamnon az in tozihateton man alaghe shadidi daram ta in mozoro yad begiram lotf mikonid begid che jor mitonam ArcGIS Engine tahie konam

sa_za11
سه شنبه 10 شهریور 1388, 00:08 صبح
با تشکر از تمام مطالب مطرح شده در این بخش
من engine و runtime رو نصب کردم و تونستم یه برنامه ساده برای نمایش نقشه با PageLayout بنویسم. الان مشتاقانه منتظر ادامه آموزش هستم، مخصوصا در مورد اتصال به پایگاه داده و کار با آن، لطفا ادامه بدید.
در ضمن چه جوری می تونم از نقشه CAd اطلاعات مورد نیاز در مورد لایه های مختلف GIS رو استخراج کنم.

cactoss84
پنج شنبه 12 شهریور 1388, 09:19 صبح
سلام ,من تونستم geodatabase با mapcontrol ارتباط بدم . حالا میخوام با arcreader این کارو انجام بدم اما addlayer نداره کسی راهی میشناسه

sa_za11
پنج شنبه 12 شهریور 1388, 12:56 عصر
سلام ,من تونستم geodatabase با mapcontrol ارتباط بدم . حالا میخوام با arcreader این کارو انجام بدم اما addlayer نداره کسی راهی میشناسه
سلام اگه امکانش هست در مورد چگونگی برقراری این ارتباط کمی توضیح بده؟

mahdiii
پنج شنبه 12 شهریور 1388, 16:13 عصر
سلام دوستان.
شرمنده که قسمت بعدی رو هنوز اینجا نزاشتم.
هفته آینده 100% مینویسم براتون که خیلیم مفصل و کامل خواهد بود .
بسیار خوشحال هستم که دوستان تونستن نصب کنن و یک برنامه ساده حداقل بنویسن.
منتظر قسمت بعدی آموزش همچنان باشید . راحتتر هست براتون که این صفحهرو در لیست Bookmark شخصیتون قرار بدید و هر روز چک بکنید اینجارو.
ممنونم از همه دوستان.

cactoss84
پنج شنبه 12 شهریور 1388, 17:37 عصر
این کدو در قسمت open کردن نقشه تون بنویسین
ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new
ESRI.ArcGIS.esriSystem.PropertySetClass();
IFeature feature;
propertySet.SetProperty("SERVER", "");
propertySet.SetProperty("INSTANCE", "");
propertySet.SetProperty("USER", "");
propertySet.SetProperty("PASSWORD", "");
propertySet.SetProperty("VERSION", "");
propertySet.SetProperty("DATABASE", "");
IWorkspaceFactory workspaceFactory = new
ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClas s();
IWorkspace workspace = workspaceFactory.Open(propertySet, 0);
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("tablename");

feature = featureClass.GetFeature(1);
pFeatureLayer = new FeatureLayer();
pMasterFeatWorkspace = (IFeatureWorkspace)workspace;//
pDataset = pMasterFeatWorkspace.OpenFeatureDataset("datasetname");
pEnumDataset = pDataset.Subsets;
pFeatDataset = pEnumDataset.Next();
pFeatureClass = (IFeatureClass)pFeatDataset;

pFeatureLayer.FeatureClass = featureClass;
axMapControl1.AddLayer(pFeatureLayer);

cactoss84
پنج شنبه 12 شهریور 1388, 17:38 عصر
نام table و datasetio که با arccatalog باز میشه رو جایگزین کنین

cactoss84
پنج شنبه 26 شهریور 1388, 07:59 صبح
سلام , خبري ازتون نيست چي شد؟

cactoss84
پنج شنبه 26 شهریور 1388, 08:02 صبح
من مي خوام setup برنامه اي كه از component هاي gis استفاده شده توش بسازم اما رو سيستمي نصب ميشه كه arc روش نصب باشه!!! با نصب runtime هم كارم راه نيفتاد چون از dll هاي gis استفاده كردم . خيلي برام مهمه ممنون ميشم اگه كسي چيزي ميدونه كمك كنه.

cactoss84
پنج شنبه 26 شهریور 1388, 08:25 صبح
يه قسمت از برنامه از editor استفاده كردم كه وقتي ميخوام نقشه لود شده از ديتابيس رو ويرايش كنم اين error ميده:the data could not be edited.additional licensing is required.
در اين مورد كسي چيزي ميدونه ؟

iman_ad
یک شنبه 29 شهریور 1388, 15:50 عصر
این برنامه نقشه offline ایران هم داره؟

cactoss84
دوشنبه 30 شهریور 1388, 11:05 صبح
اين برنامه براي نقشه ها هر محله از شهر

khalilj
دوشنبه 30 شهریور 1388, 20:44 عصر
سلام چرا ادامه نمیدید من حصابی منتظرم هاااااا:چشمک:
واقعا مبحثی هست که تا حالا به اون پرداخته نشده
آفرین بر شما
در ضمن اگه میشه در مورد موتور خدتون یکم توضیح بدید یا اگر فروشی هست قیمت و از این جور حرفها ...
ممنون منتظریم(یعنی منتظریم - همه بچه های برنامه نویس:لبخند:)

mahdiii
جمعه 03 مهر 1388, 06:54 صبح
سلام دوستان عزیز.
اولا تشکر میکنم از همه دوستان که با Email هاشون به من شوق نوشتن میدم و دوما واقعا شرمنده هستم که نتونستم یه مدتی ادامه بدم و به این تاپیک بیام ، امیدوارم که به بزرگی خودتون من رو مورد افو قرار بدید. چون من واقعا درگیر بودم . باز هم منو ببخشید.

در قسمت قبل من گفتم که دو کنترل AxToolbarControl و AxTocControl باید به AxMapControl متصل بشن تا بتونن به درستی کار بکنن ولی اسم اون propertie مخصوص این کار رو نگفتم که اسمش هست Buddy Control که اگه شما بر روی هر کدم از این دو کنترل بالا، راست کلیک کنید و گزینه Properties رو بزنید یک پنجره باز میشود و میتونید در قسمت Buddy Control لیست AxMapControl های خود رو ببینید که معمولا در هر فرم یک AxMapControl قرار میدن و اون رو انتخاب و Ok کنید.
بعد از این شما بر روی خود AxMapControl راست کلیک کنید و گزینه Properties رو بزنید یک یک پنجره باز میشود و شما میتونید در برگه Map با کلیک بر روی دکمه با علامت + یک فایل Shape به این کنترل اضافه کنید.
در این مرحله شما با راست کلیک بر روی کنترل AxToolbar و زدن گزینه Properties و رفتن به برگه Items میتونید ابزارهای مورد نیازتون رو با دابل کلیک به روی کنترلتون اضافه کنید.
البته این رو هم بگم که حتما باید کنترل مربوط به License رو هم به فرمتون اضافه کنید که اسمش AxLicenseControl هست.
خوب حالا شما با داشتن دو کنترل AxToolbar و AxToc که به AxMap متصل شدن میتونید برنامرو اجرا کنید.
همون طور که میبینید برنامه اجرا شده و شما میتونید نقشه ای که با فرمت Shape اضافه کرده بودید رو ببینید. خوب شما الان تونستید که بدون حتی نوشتن یک خط کد این برنامرو درست کنید .اما باید بگم که این برنامه تقریبا مثل اولین برنامه همه برنامه نویسهاست که اسم رو میگیره و میگه سلام "اسم" که بسیار هم خوشحال میشیم ولی کارایی نداره.

خوب حالا که با این 3 کنترل به خوبی آشنا شدید بهتره بریم سراغ کد نویسی و دنیای بی کران برنامه نویسان......

اولین قدم این هست که شما بتونید بدون کمک گرفتن از ابزار Add Layer که بر روی کنترل ابزار (AxToolbarControl)، هست (یا میتونید بر روش اضافه کنید) یک لایه که میتونه از نوع Shape ,Tif , DWG و یا MDB که همون GeoDatabase یا GDB هست رو بر روی AxMapControl یا همون نمایشگر نقشه که اصلی ترین کنترل هست ، اضافه کنید.
کد مربوطه که میتونید در داخل یک Button ساده بنویسید رو در ذیل براتون نوشتم :



Try
Dim FileName As String
OpenFileDialog1.Multiselect = True
OpenFileDialog1.FileName = Nothing
OpenFileDialog1.Filter() = "*.SHP|*.shp|*.DWG|*.dwg|*.TIF|*.tif|*.GeoDataBase (MDB)|*.mdb;"
OpenFileDialog1.ShowDialog()
If (OpenFileDialog1.FileNames.Length > 0) Then
For Each FileName In OpenFileDialog1.FileNames
' MsgBox(System.IO.Path.GetExtension(FileName).ToLow er)
Select Case System.IO.Path.GetExtension(FileName).ToLower
Case ".shp"
AxMapControl1.AddShapeFile(System.IO.Path.GetDirec toryName(FileName), System.IO.Path.GetFileName(FileName))
Case ".dwg"
Dim pCadDrawingDataset As ICadDrawingDataset
pCadDrawingDataset = GetCadDataset(System.IO.Path.GetDirectoryName(File Name), System.IO.Path.GetFileName(FileName))
If pCadDrawingDataset Is Nothing Then Exit Sub
Dim pCadLayer As ICadLayer
pCadLayer = New CadLayerClass
pCadLayer.CadDrawingDataset = pCadDrawingDataset
pCadLayer.Name = System.IO.Path.GetFileName(FileName)
AxMapControl1.AddLayer(pCadLayer)
Case ".tif"
Dim pWF As IWorkspaceFactory
pWF = New RasterWorkspaceFactory
Dim pRWS As IRasterWorkspace
pRWS = pWF.OpenFromFile(System.IO.Path.GetDirectoryName(F ileName), 0)
Dim pRasterLayer As IRasterLayer
pRasterLayer = New RasterLayer
Dim pRDataset As IRasterDataset
pRDataset = pRWS.OpenRasterDataset(System.IO.Path.GetFileName( FileName))
pRasterLayer.CreateFromDataset(pRDataset)
AxMapControl1.AddLayer(pRasterLayer)
Case ".mdb"
Dim wsf As IWorkspaceFactory2 = New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory
ws_public = wsf.OpenFromFile(FileName, 0)

Dim enumDataset As IEnumDataset = ws_public.Datasets(esriDatasetType.esriDTFeatureCl ass)
enumDataset.Reset()

Dim dataset As IDataset = enumDataset.Next()

'Write in GDB_LayersList_Form
GDB_LayersList_Form.CheckedListBox1.Items.Clear()
Try
While dataset.Name <> Nothing
GDB_LayersList_Form.CheckedListBox1.Items.Add(data set.Name.ToString)
dataset = enumDataset.Next()
End While
Catch ex As Exception

End Try
GDB_LayersList_Form.Show()
GDB_LayersList_Form.Focus()
End Select
Next
End If
OpenFileDialog1.Multiselect = False
OpenFileDialog1.FileName = ""
AxMapControl1.Refresh()
Catch ex As Exception
End Try
حالا در فرم GDB_LayersList_Form که باید بسازید یک CheckListBox و یک Button اضافه کنید در قسمت کد مربوط به رویداد کلیک مربوط به Button کد ذیل را بنویسید :



If CheckedListBox1.CheckedItems.Count > 0 Then
Dim i As Integer
Dim enumDataset As IEnumDataset = ws_public.Datasets(esriDatasetType.esriDTFeatureCl ass)
enumDataset.Reset()
Dim dataset As IDataset = enumDataset.Next()

Dim featureLayer As IFeatureLayer = Nothing

Try
While dataset.Name <> Nothing
For i = 0 To CheckedListBox1.CheckedItems.Count - 1
If CheckedListBox1.CheckedItems.Item(i).ToString = dataset.Name.ToString Then
featureLayer = New FeatureLayerClass()
featureLayer.FeatureClass = dataset
featureLayer.Name = dataset.Name
MainForm.AxMapControl1.AddLayer(featureLayer)
MainForm.AxMapControl1.Refresh()
End If
Next
dataset = enumDataset.Next()
End While
Catch ex As Exception

End Try
Else
MsgBox("هیچ یک از لایه ها انتخاب نشده است")
End If



اگه راجع به کد توضیح خواستید بگید که توضیح بدم چون الان دارم با اجازتون میرم که بخوابم.

باید به کاربر cactoss84 (http://barnamenevis.org/forum/member.php?u=28322) بگم که شما در این کد که امشب نوشتم فکر کنم راحت تر بتونید GeoDB یا MDB رو بخونید.

در رابطه با Engine که خودم نوشتم که بسیار از هر لحاظ بهتر از ArcGIS Engine هست بعدن توضیح میدم ولی اگه میخواین در مورد خریدش بدونید میتونید بهم Email بزنید : Mahdi.al@Gmail.com

با سئوالاتتون منو تشویق میکنید برای ادامه آموزش.
متشکرم....

Arakhsh
شنبه 04 مهر 1388, 09:46 صبح
سلام مهدي جان
ايول
خيلي ذوق كردم كه بلاخره يكي پيدا شد كه از درد ما هم بنويسه
واقعا جاش خالي بود اما خودم حوصله ام نميكشيد يه تاپيك جديد بذارم چون واقعا وقتش نيست
بعد از مدتهاست كه سر ميزنم اما فكر ميكنم بلاخره يكي پيدا شده كه پا بندم كنه

يه مشكلي الان با برنامه نويسي دارم كه جوابي كه بالا دادين يه خورده بهش نزديك شده اما من مشكلم يا sql server و arc sde ميخوام اين برنامه تو شبكه با يه بانك اطلاعاتي قوي كار كنه اين كه شما نوشتيد براي gdb از نوع access كه فقط براي يه كاربر اونهم تحت يك clientجواب ميده خوبه اگه در زمينه نوشتن يه برنامه كه بشه تو شبكه ازش استفاده كرد كاري انجام دادين خيلي ممنون ميشم كمك كنيد

mahdiii
یک شنبه 05 مهر 1388, 16:59 عصر
سلام دوست عزیز.به نکته خوبی اشاره کردی.
من برای اولین بار تو ایران این کارو انجام دادم.
بهترین Data Base و اولین در دنیا Postgresql هست که البته باید اکستنشن Postgis رو بر روش نصب کنی . واقعا بانک اطلاعاتی عالی هستش.
در نسخه ArcGis Engine 9.3 این امکان گذاشته شده که به صورت مستقیم از PostgreSQL و هم از Oracle بتونید بخونید . ولی من در نسخه های قبلی روشی پیاده کردم که میتونه از Postgresql تحت شبکه و یا حتی اینترنت بخونه . روش به این صورت هست که هر کلاینت که یک لایه را در برنامه انتخاب میکند برنامه درخواست را به سرور میفرستد و سرور این لایه را به صورت فایل Shape تبدیل میکند و به کلاینت میفرستد و بعد از اتمام کار با لایه این لایه را در بانک ذخیره میکند و آن فایل را از روی کلاینت برای امنیت بیشتر پاک میکند.
البته برای امنیت بیشتر من سطوح دسترسی درست کردم که بسیار عالی هستش.
البته در موتور جدیدی که خودم درست کردم به صورت مستقیم و بدون حتی درست کردن فایلی و به صورت WKB و WKT از PostgreSQL , Oracle و حتی MSSQL میتونه با سرعت بسیار بالایی لایه ها را نمایش میدهد و همه جور امکاناتی دارد . حتی امکانات تحلیلی بسیار قوی که بعید میدونم حتی در خود ARCMap هم بشه انجام داد.
شما اول Postgresql v, رو download و نصب کنید و بعد PostGIS رو download و نصب کنید تا من کد مربوطه رو در اختیارتون بزارم. اگه در نصبشم مشکلی داشتید بگید که من با عکس و متن راهنماییتون کنم.

اگه شخصی بخواد میتونه بر روی این Engine که من نوشتم که هم تحت WEB و هم تحت WIN یا Desktop قابل اجرا هست ، سرمایه گذاری یا بازاریابی کنه که بسیار پر سود هست و حتما به عنوان شریک من مطرح میشه.

متشکرم .....

Arakhsh
دوشنبه 06 مهر 1388, 13:06 عصر
من اين نرم افزارها رو دارم اما يه خورده مشكل با خود postgreدارم تو اين زمينه ميخوام نقشه رو تو نرم افزار خودم loadكنم اما هنوز نتونستم ممنون ميشم اگه نمونه كدي در اين زمينه داري تو اينجابه اشتراك بذاري

mahdiii
سه شنبه 07 مهر 1388, 18:49 عصر
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

cactoss84
جمعه 10 مهر 1388, 14:19 عصر
سلام
به فیلد geometry دست رسی دارم به صورت داده های عددی توی برنامه دارمش اما میخوام تبدیل کنم به چیزی که
در اصل هست و روی mapcontrol نشونش بدم تو این قسمت مشکل دارم

mahdiii
شنبه 11 مهر 1388, 12:10 عصر
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

cactoss84
یک شنبه 12 مهر 1388, 08:13 صبح
executeCommand("pgsql2shp", Cmd); از اينم استفاده كردم اما نميدونم چه جوري به mapcontrol ربطش بدم ؟اگه ميشه كدشو برام بذارين

mahdiii
شنبه 18 مهر 1388, 17:06 عصر
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

cactoss84
دوشنبه 20 مهر 1388, 08:22 صبح
سلام , من اين كدو دارم وقتي تو commande dos اجرا ميكنم كار ميكنه هم pgsql2shp ,هم shp2pgsql اما توي كد نويسي برنامه ام اجرا نميشه و اينكه نميدونم چه جوري ميشه توي mapcontrol يا picturebox نمايشش بدم!!!!

mahdiii
سه شنبه 21 مهر 1388, 19:35 عصر
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

mahdiii
چهارشنبه 22 مهر 1388, 04:57 صبح
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

mahdiii
چهارشنبه 22 مهر 1388, 07:54 صبح
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

mahdiii
چهارشنبه 22 مهر 1388, 07:55 صبح
jzhxkjckzjhxc
kxnczlkxnkjczx
zxcnkzjxk

mahdiii
یک شنبه 26 مهر 1388, 02:46 صبح
سلام , ببینین من هم از 9.3 استفاده میکنم , کدی که از vectorو sharpmape هم دارم اما نقشه رو تو picturebox لود نمیکنه , اینو میخوام ؟
دیگه تینجا سئوال نپریید ولی سئوالتون اصلا مفهوم نیست . بزنگ که خوب توضیح بدیو بفهمم.

beikimajid
چهارشنبه 04 آذر 1388, 10:27 صبح
يه مثال بذارين،خواهشا

mehdi_shah
شنبه 10 بهمن 1388, 15:17 عصر
من آموزش را نمی بینم علت چیست؟
مرسی
مهدی

mohsen.nikzadeh
دوشنبه 30 فروردین 1389, 09:53 صبح
سلام خدمت همه دوستان عزیز
من هم با arc gis server تحت وب کار میکنم
کسی بلده سوال کنم یا نه ؟

mohsen.nikzadeh
دوشنبه 30 فروردین 1389, 11:00 صبح
کسی کتاب در مورد arc gis server تحت وب به زبان english داره

mohsen.nikzadeh
دوشنبه 30 فروردین 1389, 11:01 صبح
کسی با javascript ADF کار کرده

mohsen.nikzadeh
دوشنبه 30 فروردین 1389, 11:02 صبح
لطفا کمک کنیک کتاب در مورد gis برای وب بابرنامه نویسی C# هست ولی 2 میلیون قیمتش هست

masoudfcr
یک شنبه 21 آذر 1389, 15:02 عصر
سلام، چجوری میشه رنگ feature رو تغییر داد و یه label روش نوشت؟؟وقتی که یه label میزارم رو feature میره زیرش!!

hamzol206
دوشنبه 29 آذر 1389, 12:22 عصر
سلام من الان اين تاپيك رو پيدا كردم خيلي عليه تشكر ميكنم از مولف اين صفحه

mgiskavan
جمعه 30 اردیبهشت 1390, 15:50 عصر
اينكه داريد آموزش ميديد خيلي خوبه شايد شما اولين كسي باشيد كه داره اين كار رو انجام ميده اين نشون دهنده اينه كه ذهن بازي داري و داري قدرتمند عمل ميكني خيلي ها رو ميشناسم كه بلد هستند و كاملا انحصاري عمل ميكنن و آموزش هم نميدن دنبال اين هستن كه پروژه ها رو تو انحصار خودشون داشته باشن البته اين خود نشون عدم توانايي و قدرت ذهني انها هست چون هميشه اين ترس رو دارن كه انحصار از دستشون خارج شه به هر حال از شما به خاطر راه اندازي اين مجموعه اموزش ممنون هستم من به برنامه نويسي وارد نيستم بيشتر با خود نرم افزار gis و نرم افزار سنجش از دور كار كردم در واقع ميشه گفت كاملا صفر صفر هستم بگيد از كجا شروع كنم كه هم برنامه نويسي ياد بهگيرم و هم برنامه نويسي محيط gis ؟؟؟؟؟ ممنون

ahsan419
پنج شنبه 12 خرداد 1390, 16:08 عصر
سلام تاپیک تعطیل شده ؟؟ چرا کسی جواب نمیده؟؟

sbluebehnam
پنج شنبه 20 مرداد 1390, 19:37 عصر
سلام.
من 13 ساله برنامه نویسی می کنم. ابزار اصلیم هم VB هستش.
من جایی مشغول کارم که تو GIS زندگی میکنم. همکارام هم خدای GIS هستن. ولی تخصصشون در همون مورده. اتفاقا لازم شده که ما تو این زمینه کار کنیم. همکارمون قرار شده GIS رو تو حد خوبی بهمون آموزش بده. برا برنامه نویسی هم خودمون فعالت کنیم. با توجه به پیش زمینه ای که در این مورد دارم. مطالبتئن عالیه. ممنون میشن ادامه بدید.
با تشکر

سوداگر
پنج شنبه 24 آذر 1390, 00:29 صبح
سلام تاپیک تعطیل شده ؟؟ چرا کسی جواب نمیده؟؟

محروم شد:گریه:
من تازه Arc Gis10 رو نصب کردم ولی با 7 مشکل داره. حتی run as administrator هم .....

ebi_hamid
سه شنبه 20 دی 1390, 18:06 عصر
با سلام خدمت برنامه نویسان عزیز

اگر هدف شما توسعه windows gis application هست از ابزار franson استفاده کنید،کتابی هم تالیف کردم به نام برنامه نویسی سیستم های GIS در .NET
که میشه از انتشارات ناقوس تهیه کرد.
امیدوارم برای شما مفید باشه و ابزارهای حرفه ای با اون بنویسید.
با تشکر

gholami3000
دوشنبه 03 مهر 1391, 12:10 عصر
ممنون از مطالب خوبتون اگه لطف کنید یک نمونه برنامه کوچک برای مثال قرار بدید.

یاسر مددیان
یک شنبه 28 آبان 1391, 11:27 صبح
سلام
در صورت امکان یه سری اطلاعات در مورد mapguide و فرقش با arcgis میخواستم که کدومیک انتخاب بهتریه و سرعت بالاتری داره و از نظر کاربردی کدوم بهتره.


با تشکر

sp_an63
پنج شنبه 26 بهمن 1391, 13:43 عصر
خیلی خیلی ممنونم از انتخاب این موضوع.
خواهش میکنم این تاپیک رو ادامه بدین

vahidvpa
پنج شنبه 02 آبان 1392, 17:37 عصر
سلام ادامه تایپیک پس چی شد

mahdiii_al
یک شنبه 01 دی 1392, 02:23 صبح
سلام دوستان.
من همون mahdiii هستم که متاسفانه بن شده بودم و مدت طولانی هم سرم بسیار شلوغ بود.
ما داریم با همکاری فعلا یکی از دوستان سایت مجزایی مختصه این موضوع درست میکنیم به نام لی وی سی : www.LiVi30.com
به زودی میتونید آموزشهای بسیار با کیفیت بهتری رو اونجا ببینید. فعلا سایت در حال راه اندازیه، امیدوارم تا 1 ماه دیگه (امروز 01/10/1392) بتونیم سایت رو راه بندازیم.
ممنون از همه شما دوستان و معذرت میخوام بخاطر این وقفه طولانی.

امین ابراهیمی
جمعه 04 بهمن 1392, 01:28 صبح
ترجمه کتاب "Getting to know arcobject" با انتشارات پژوهشکده خاک و آبخیزداری چاپ شد.
جهت کسب اطلاعات بیشتر با شماره 09397076348 تماس بگیرید.

star-m2
سه شنبه 02 اردیبهشت 1393, 20:44 عصر
salam b hame dustan azink b jametun peyvastam khoshhalam ye moshkeli dashtam mikhastam dar arc gis ba vba barnamei benevisam k ye file excle begire va rush mohasebat kone chejur bayad in karo bokonam?mamnun

mrsProgrammer
دوشنبه 29 تیر 1394, 11:04 صبح
سلام چرا من نمیتونم آدرس رو ببینم؟:گریه:

mrsProgrammer
دوشنبه 29 تیر 1394, 11:08 صبح
آدرس سایت اشتباهه که!! :(

adineh67
سه شنبه 30 تیر 1394, 18:47 عصر
سلام به همه ی دوستان
من arc gis engine 10 رو نصب کردم و از visual 2010 استفاده می کنم این سه کنترل AxMapControl،AXTocControl وAxToolbarControl
رو از قسمت add tools انتخاب میکنم ولی به کامپوننتهای تولباکسم اضافه نمیشن علت چی هست؟