Shapefile چیست؟ ساختار فایل SHP و کاربرد آن در ArcGIS و QGIS
Shapefile یا «شیپفایل» یکی از شناختهشدهترین فرمتهای ذخیره دادههای برداری (Vector) در GIS است. یک Shapefile میتواند عوارضی مانند نقطه، خط یا پلیگون را همراه با اطلاعات توصیفی آنها نگهداری کند، اما برخلاف نام رایج «فایل SHP»، معمولاً از چند فایل همنام تشکیل میشود. سه جزء اصلی آن .shp برای هندسه، .shx برای شاخص هندسه و .dbf برای اطلاعات توصیفی هستند. فایلهایی مانند .prj و .cpg نیز میتوانند اطلاعات سیستم مختصات و Encoding متن را نگهداری کنند.
Shapefile در ArcGIS Pro و QGIS قابل استفاده است و به دلیل سادگی و سازگاری گسترده هنوز در تبادل دادههای مکانی رایج است. با این حال، این فرمت محدودیتهایی در نام فیلدها، نگهداری مقادیر Null، اطلاعات زمانی، Unicode و قابلیتهای پیشرفته پایگاه داده دارد؛ بنابراین همیشه بهترین انتخاب برای ذخیره یا مدیریت بلندمدت داده نیست.
Shapefile چیست؟
Shapefile یک فرمت فایل برای ذخیره عوارض برداری جغرافیایی و اطلاعات توصیفی مرتبط با آنهاست. این فرمت برای نمایش Simple Featureهای مکانی طراحی شده و میتواند مختصات و هندسه عوارض را در کنار رکوردهای جدول توصیفی نگهداری کند.
اگر با مفهوم داده برداری، Raster، Attribute یا CRS آشنا نیستید، ابتدا راهنمای داده GIS چیست؟ را مطالعه کنید. Shapefile فقط یکی از فرمتهای ممکن برای ذخیره دادههای برداری GIS است و نباید آن را با خود مفهوم «داده GIS» یکسان دانست.
برای مثال، یک لایه شبکه معابر میتواند در قالب Shapefile شامل هندسه خطی خیابانها و جدولی از مشخصات هر عارضه باشد. یک لایه محدوده محلات نیز میتواند پلیگون هر محله را همراه با نام یا سایر Attributeهای آن ذخیره کند.
در کاربرد روزمره گاهی به کل مجموعه Shapefile «فایل SHP» گفته میشود، اما از نظر فنی فایل .shp فقط یکی از اجزای این Dataset است. اگر تنها فایل SHP را دریافت یا جابهجا کنید، ممکن است اطلاعات توصیفی، شاخص هندسه، سیستم مختصات یا Encoding موردنیاز در دسترس نباشد.
Shapefile از چه فایلهایی تشکیل میشود؟
یک Shapefile استاندارد از چند فایل با نام پایه یکسان تشکیل میشود. برای نمونه اگر نام Dataset برابر roads باشد، فایلهای اصلی آن به شکل roads.shp، roads.shx و roads.dbf خواهند بود.
| پسوند | کاربرد | وضعیت |
|---|---|---|
.shp |
ذخیره هندسه عوارض | ضروری |
.shx |
شاخص هندسه برای دسترسی به عوارض | ضروری |
.dbf |
جدول dBASE شامل Attributeهای عوارض | ضروری |
.prj |
اطلاعات سیستم مختصات و Projection | اختیاری، اما بسیار مهم |
.cpg |
مشخص کردن Code Page یا Encoding متن | اختیاری |
.xml |
متادیتای مرتبط با Dataset در برخی Workflowها | اختیاری |
.sbn/.sbx |
فایلهای شاخص مکانی در برخی پیادهسازیها | اختیاری |
فایل SHP چه چیزی را نگهداری میکند؟
فایل .shp بخش اصلی هندسی Shapefile است. مختصات و شکل عوارض در این فایل ذخیره میشوند. به همین دلیل اگر فایل SHP وجود نداشته باشد، Geometry لایه در دسترس نیست.
فایل SHX چیست؟
فایل .shx شاخص هندسه را نگهداری میکند و به نرمافزار کمک میکند موقعیت رکوردهای هندسی را در فایل اصلی پیدا کند. این فایل بخشی از سه جزء ضروری Shapefile است.
فایل DBF چه کاربردی دارد؟
فایل .dbf جدول اطلاعات توصیفی را نگهداری میکند. هر رکورد جدول به عارضه متناظر در بخش هندسی مرتبط است. برای نمونه، در یک Shapefile معابر، هندسه خط در SHP ذخیره میشود و اطلاعاتی مانند نام یا نوع معبر میتواند در DBF قرار گیرد.
این ساختار ساده یکی از دلایل سازگاری گسترده Shapefile است، اما استفاده از dBASE برای Attributeها منشأ بخشی از محدودیتهای این فرمت نیز محسوب میشود.
چه نوع دادهای را میتوان در Shapefile ذخیره کرد؟
Shapefile برای دادههای برداری استفاده میشود، نه Raster. بسته به Dataset، هندسه میتواند از خانواده نقطه، خط یا پلیگون باشد. هر لایه Shapefile معمولاً یک نوع هندسه سازگار را نگهداری میکند؛ بنابراین برای مثال نقاط خدماتی، محور معابر و محدوده محلات معمولاً در سه Dataset جداگانه ذخیره میشوند.
| نوع هندسه | کاربرد معمول | نمونه |
|---|---|---|
| Point / MultiPoint | پدیدههایی که با موقعیت مشخص نمایش داده میشوند | ایستگاه، مرکز خدماتی، نقطه نمونهبرداری |
| Line / Polyline | پدیدههای خطی یا شبکهای | خیابان، مسیر، رودخانه، خطوط شبکه |
| Polygon | پدیدههای دارای محدوده و سطح | محله، قطعه، کاربری زمین، بلوک آماری |
اگر داده شما تصویر ماهوارهای، مدل ارتفاعی یا Raster دیگری است، Shapefile فرمت مناسب آن نیست. برای چنین دادههایی فرمتهایی مانند GeoTIFF کاربرد دارند.
فایل PRJ چیست و چه ارتباطی با CRS دارد؟
فایل .prj اطلاعات سیستم مرجع مختصات Shapefile را ذخیره میکند. وجود Geometry بهتنهایی کافی نیست؛ نرمافزار باید بداند مختصات عددی موجود در داده به چه سیستم جغرافیایی یا تصویرشدهای تعلق دارند تا بتواند عوارض را در مکان درست نمایش دهد.
اگر فایل PRJ وجود نداشته باشد، ممکن است ArcGIS یا QGIS نتوانند CRS لایه را بهطور قطعی تشخیص دهند. در چنین شرایطی نباید بدون بررسی منبع داده، یک CRS را بهصورت حدسی انتخاب کرد.
همچنین باید تفاوت میان تعریف CRS و تبدیل مختصات را در نظر گرفت. Assign کردن یک CRS به داده مختصات را تغییر نمیدهد؛ در حالی که Reproject یا Transform مختصات را از یک سیستم مرجع به سیستم دیگری تبدیل میکند.
اگر لایهای روی نقشه در مکان نامناسب ظاهر میشود یا با سایر لایهها منطبق نیست، یکی از اولین مواردی که باید بررسی شود CRS و فایل PRJ است.
فایل CPG چیست و چرا متن فارسی در Shapefile گاهی بههم میریزد؟
فایل .cpg میتواند Code Page یا Encoding مورد استفاده برای متنهای جدول DBF را مشخص کند. این موضوع برای دادههایی که دارای نامها و Attributeهای فارسی هستند اهمیت ویژهای دارد.
ساختار قدیمی dBASE و تفاوت Code Pageها باعث میشود در برخی Shapefileها متن فارسی به شکل علامت سؤال، کاراکترهای ناخوانا یا حروف بههمریخته نمایش داده شود. وجود CPG معتبر میتواند به نرمافزار در تشخیص Encoding کمک کند، اما رفتار نهایی به نحوه ایجاد فایل و نرمافزار مورد استفاده نیز وابسته است.
QGIS ابزارهایی برای بررسی Encoding تعبیهشده در Shapefile دارد و اطلاعات موجود در فایل CPG یا Header فایل DBF را در نظر میگیرد. بنابراین در صورت مشاهده مشکل فارسی، حذف یا تغییر تصادفی Encoding راه مناسبی نیست؛ ابتدا باید مشخص شود Dataset با چه Encodingی تولید شده است.
چگونه Shapefile را در ArcGIS Pro و QGIS باز کنیم؟
Shapefile در هر دو نرمافزار ArcGIS Pro و QGIS پشتیبانی میشود. در حالت معمول کافی است Dataset را از مسیر ذخیرهسازی به پروژه اضافه کنید؛ اما بهتر است تمام فایلهای همراه آن در یک پوشه و با نام پایه یکسان باقی بمانند.
باز کردن Shapefile در ArcGIS Pro
در ArcGIS Pro میتوان از گزینه Add Data یا از طریق Folder Connection در Catalog به پوشه Shapefile دسترسی پیدا کرد و آن را به Map اضافه کرد. ArcGIS Pro فایلهای مرتبط را بهصورت یک Dataset نمایش میدهد و معمولاً کاربر لازم نیست SHP، SHX و DBF را جداگانه اضافه کند.
باز کردن Shapefile در QGIS
در QGIS نیز ESRI Shapefile یکی از فرمتهای Vector پشتیبانیشده است و میتوان آن را از Data Source Manager، Browser یا روشهای متداول افزودن Vector Layer باز کرد. QGIS پشتیبانی فرمتهای Vector را از طریق درایورهای GDAL/OGR انجام میدهد.
آیا فقط فایل SHP را باید انتخاب کنیم؟
در رابط نرمافزار معمولاً فایل .shp یا Dataset Shapefile انتخاب میشود، اما فایلهای همراه باید در همان محل موجود باشند. نرمافزار از آنها برای هندسه، Attributeها، سیستم مختصات و سایر اطلاعات استفاده میکند.
محدودیتهای Shapefile چیست؟
Shapefile برای تبادل ساده دادههای Vector بسیار مفید است، اما فرمت مدرنی برای مدیریت پیچیده یا بلندمدت پایگاه داده محسوب نمیشود. مستندات ArcGIS Pro نیز استفاده از آن را برای دادههای دارای Attribute پیچیده یا Workflowهای پیشرفته محدود میداند.
از مهمترین محدودیتها میتوان به حداکثر ۱۰ کاراکتر برای نام فیلد، محدودیت در نگهداری Null، پشتیبانی محدودتر از Unicode و زبانهای غیرانگلیسی، نبود برخی قابلیتهای Geodatabase مانند Domain و Subtype، و نبود پشتیبانی کامل از اطلاعات زمانی در فیلد Date اشاره کرد. ArcGIS Pro همچنین برای اندازه Shapefile سقف ۲ گیگابایت ذکر میکند.
این محدودیتها در پروژههای ساده ممکن است مسئله مهمی ایجاد نکنند، اما در Datasetهایی با جداول بزرگ، نام فیلدهای طولانی، متن فارسی، مقادیر گمشده، اطلاعات زمانی یا قواعد دادهای پیچیده باید جدی گرفته شوند.
محدودیت نام فیلدها
نام فیلد در Shapefile نمیتواند بیش از ۱۰ کاراکتر باشد. بنابراین هنگام Export از یک پایگاه داده مدرن به Shapefile، نامهای طولانی ممکن است کوتاه یا تغییر داده شوند. این موضوع میتواند خوانایی Schema را کاهش دهد و حتی در صورت وجود نامهای مشابه باعث ابهام شود.
محدودیت Null
Shapefile در نگهداری Null برای بسیاری از انواع فیلد محدودیت دارد. در تبدیل داده از منابع دیگر ممکن است مقادیر Null به مقدار دیگری تبدیل شوند. بنابراین صفر، فضای خالی یا مقدار خاصی در یک Shapefile لزوماً همیشه همان معنای «داده واقعی» را ندارد و Metadata باید بررسی شود.
محدودیت متن فارسی و Unicode
ذخیره متن غیرانگلیسی در ساختار dBASE قدیمی میتواند به Code Page وابسته باشد. در پروژههای فارسی، وجود Encoding صحیح و فایل CPG میتواند اهمیت زیادی داشته باشد.
محدودیتهای مدیریت داده
Shapefile قابلیتهایی مانند Domain، Subtype و روابط پیشرفته پایگاه داده را مانند Geodatabase ارائه نمیدهد. به همین دلیل برای مدیریت فعال، ویرایش مستمر، کنترل کیفیت پیچیده یا مدلهای داده بزرگ معمولاً فرمتهای جدیدتر گزینه مناسبتری هستند.
Shapefile یا GeoPackage؛ کدام بهتر است؟
انتخاب فرمت باید بر اساس Workflow انجام شود. Shapefile برای تبادل گسترده و ساده دادههای Vector همچنان بسیار کاربردی است، اما GeoPackage برای بسیاری از پروژههای جدید ساختار منعطفتر و مدرنتری دارد. QGIS نیز GeoPackage را بهعنوان فرمت پیشفرض Vector معرفی میکند.
| ویژگی | Shapefile | GeoPackage |
|---|---|---|
| ساختار فایل | چند فایل مرتبط | معمولاً یک فایل پایگاهداده |
| نوع داده | Vector Simple Features | Vector و برخی انواع Raster/Tile و جدول |
| نام فیلد | محدود به ۱۰ کاراکتر | انعطاف بیشتر |
| Unicode و متن | وابستهتر به Encoding و Code Page | مناسبتر برای دادههای متنی مدرن |
| سازگاری با نرمافزارهای قدیمی | بسیار گسترده | در نرمافزارهای جدید گسترده |
| کاربرد مناسب | تبادل ساده و سازگاری حداکثری | ذخیره و مدیریت مدرنتر Datasetها |
اگر مقصد فایل یا سامانه دریافتکننده فقط Shapefile را میپذیرد، استفاده از SHP منطقی است. اگر در حال طراحی Workflow جدید هستید و محدودیت سازگاری ندارید، بهتر است نیازهای پروژه را پیش از انتخاب فرمت بررسی کنید.
مشکلات رایج Shapefile و دلیل احتمالی آنها
بخش مهمی از خطاهای Shapefile از ناقص بودن مجموعه فایلها، CRS نامشخص یا Encoding نادرست ایجاد میشود. قبل از نتیجهگیری درباره خراب بودن فایل، ساختار Dataset را بررسی کنید.
| مشکل | علتهای محتمل | اولین بررسی |
|---|---|---|
| لایه باز نمیشود یا Attribute ندارد | نبود SHX یا DBF، فایل ناقص یا آسیبدیده | وجود SHP، SHX و DBF همنام |
| لایه در مکان اشتباه نمایش داده میشود | CRS اشتباه یا ناشناخته | PRJ و مشخصات منبع داده |
| متن فارسی ناخواناست | Encoding یا Code Page نامناسب | CPG و Encoding DBF |
| نام فیلدها کوتاه شدهاند | محدودیت ۱۰ کاراکتری Shapefile | Schema منبع و فرایند Export |
| مقادیر خالی به شکل صفر یا مقدار دیگر دیده میشوند | محدودیت Null در dBASE/Shapefile | Metadata و داده منبع |
| تاریخ بدون ساعت است | محدودیت Date در Shapefile | فرمت و نیاز تحلیل زمانی |
قبل از استفاده از یک Shapefile چه چیزهایی را بررسی کنیم؟
- کامل بودن فایلها: حداقل SHP، SHX و DBF را کنترل کنید و فایلهای PRJ و CPG را نیز در صورت وجود نگه دارید.
- نوع هندسه: مشخص کنید لایه Point، Line یا Polygon است و با تحلیل شما تناسب دارد.
- CRS: سیستم مختصات را از PRJ، Metadata یا منبع داده تأیید کنید.
- Attributeها: نام فیلدها، نوع داده و محتوای جدول را بررسی کنید.
- Encoding: برای دادههای فارسی، نحوه نمایش متن و وجود CPG را کنترل کنید.
- تاریخ و منبع: بدانید Dataset مربوط به چه سال یا دورهای است و از چه منبعی تهیه شده است.
- محدوده جغرافیایی: Coverage فایل را با محدوده پروژه تطبیق دهید.
- محدودیت فرمت: اگر پروژه به Null، نام فیلدهای طولانی، زمان، Domain یا ساختار پیچیده نیاز دارد، فرمت جایگزین را بررسی کنید.
برای شناخت معیارهای عمومی انتخاب Dataset، به راهنمای دادههای GIS مراجعه کنید. اگر هدف شما یافتن دادههای مکانی قابل استفاده در نرمافزارهای GIS است، بخش لایههای GIS دیجیمپس نقطه شروع مناسبی است.
پرسشهای متداول درباره Shapefile و فایل SHP
آیا SHP همان Shapefile است؟
در گفتوگوی روزمره معمولاً این دو عبارت به جای هم استفاده میشوند، اما از نظر فنی فایل .shp فقط بخش هندسی یک Shapefile است. یک Shapefile کامل حداقل به فایلهای SHP، SHX و DBF نیاز دارد.
برای ارسال Shapefile باید کدام فایلها را بفرستیم؟
بهتر است تمام فایلهایی که نام پایه یکسان دارند با هم ارسال شوند. حداقل SHP، SHX و DBF ضروری هستند و فایلهای PRJ، CPG و سایر اجزای مرتبط نیز نباید بدون دلیل حذف شوند. معمولاً قرار دادن مجموعه فایلها در یک ZIP روش سادهای برای انتقال است.
فایل PRJ ضروری است؟
PRJ جزء سه فایل ضروری کلاسیک Shapefile نیست، اما در عمل اهمیت زیادی دارد؛ زیرا اطلاعات سیستم مختصات را نگهداری میکند. نبود آن میتواند تشخیص CRS را دشوار کند و باعث شود نرمافزار نداند مختصات فایل متعلق به چه سیستم مرجعی هستند.
چرا حروف فارسی در جدول Shapefile خراب نمایش داده میشوند؟
یکی از دلایل رایج، ناسازگاری Encoding یا Code Page فایل DBF است. فایل CPG میتواند Encoding را مشخص کند. بهتر است قبل از تغییر Encoding، منبع و نحوه تولید Dataset بررسی شود تا متنها به اشتباه تبدیل یا بازنویسی نشوند.
آیا Shapefile در ArcGIS Pro باز میشود؟
بله. ArcGIS Pro از Shapefile پشتیبانی میکند و میتوان آن را از طریق Add Data یا Folder Connection به Map اضافه کرد. بهتر است همه فایلهای متعلق به Dataset در یک پوشه باقی بمانند.
آیا Shapefile در QGIS باز میشود؟
بله. ESRI Shapefile یکی از فرمتهای Vector پشتیبانیشده در QGIS است و میتوان آن را مانند سایر لایههای برداری به پروژه اضافه کرد.
آیا Shapefile میتواند تصویر ماهوارهای ذخیره کند؟
خیر. Shapefile برای دادههای برداری طراحی شده است. تصاویر ماهوارهای و سایر دادههای Raster معمولاً در فرمتهایی مانند GeoTIFF یا سایر قالبهای Raster ذخیره میشوند.
آیا Shapefile هنوز برای پروژههای GIS مناسب است؟
برای تبادل ساده دادههای Vector و سازگاری با طیف گستردهای از نرمافزارها هنوز مفید است. اما برای مدیریت پایگاه داده فعال، دادههای دارای Schema پیچیده، متن Unicode، مقادیر Null یا Workflowهای مدرن ممکن است GeoPackage، Geodatabase یا فرمت دیگری انتخاب مناسبتری باشد.
قبل از خرید یا دانلود فایل SHP چه مشخصاتی را بررسی کنیم؟
نوع هندسه، Attributeها، CRS، سال و منبع داده، محدوده جغرافیایی، Encoding و کامل بودن اجزای Shapefile را بررسی کنید. عنوان «SHP» بهتنهایی برای تشخیص مناسب بودن Dataset برای پروژه کافی نیست.
فایل SHP را بر اساس محتوای داده انتخاب کنید، نه فقط پسوند فایل
Shapefile یک ظرف برای داده برداری است؛ ارزش و کاربرد واقعی آن به Geometry، Attributeها، CRS، منبع، تاریخ و Coverage داده بستگی دارد. دو فایل SHP میتوانند از نظر فرمت کاملاً مشابه باشند اما برای دو کاربرد کاملاً متفاوت تهیه شده باشند.
مشاهده لایههای GIS | راهنمای انتخاب داده GIS | نقشهها و دادههای تهران
منابع فنی
ساختار، محدودیتها و نکات فنی این راهنما با مستندات رسمی Esri و QGIS تطبیق داده شدهاند: