با سلام و درود ، عید سعید فطر مبارک باشه (امروز ۱۵ خرداد ۹۸ مصادف با عید سعید فطر)، تو پروژه ای که دارم کار می کنم نیاز به شهر و کشور داخل مدل هام پیدا کردم. با یه جستجوی ساده این رو پیدا کردم. حال قصد دارم تو این مقاله قصد دارم با آموزش راه اندازی django-cities در خدمتتون باشم.
نصب django-cities :
قدم اول نصب با استفاده از pip که دستورش به شرح زیر است:
pip install django-cities
کانفیگ کردن:
خب به بخش سخت کار رسیدیم :)))
اول از همه باید GeoDjango را فعال کنید. تو این آموزش برای اینکار به نصب SpatiaLite پرداختیم.
نصب پایگاه داده
من از پایگاه داده Sqlite3 که همراه با Django نصب و پیشفرض تنظیم شده بود استفاده کردم. در نتیجه نیازی به نصب Sqlite3نداشتم. فقط برای استفاده از ویژگی های Spatioal و جغرافیایی در Sqlite3 نیاز به نصب موارد زیر دارید:
قدم اول نصب پکیج های libsqlite3-mod-spatialite با دستور :
sudo apt install libsqlite3-mod-spatialite
تو پرانتز بگم که مشخصه من دارم روی لینوکس موارد فوق رو نصب می کنم و آموزش برای کاربران لینوکسی مفید خواهد بود.
خب حالا باید تست کنیم که SQLite با R*Tree module کامپایل شده یا خیر. برای این منظور پس از اجرای sqlite3 command line interface دستور زیر رو بزنید:
sqlite3 mydata.db
CREATE VIRTUAL TABLE testrtree USING rtree(id,minX,maxX,minY,maxY);
اگر به اروری بر نخورید تا اینجا کارها درست پیش رفته 🙂
اگر به اروری بر خوردید باید Sqlite ا مجدد از روی سورس کامپایل کنید. برای این کار اول sqlite و از روی سورس نصب کنید :
wget https://www.sqlite.org/YYYY/sqlite-amalgamation-XXX0000.zip
unzip sqlite-amalgamation-XXX0000.zip
cd sqlite-amalgamation-XXX0000
حال اسکریپت کانفیگ رو اجرا کنید:
CFLAGS="-DSQLITE_ENABLE_RTREE=1" ./configure
make
sudo make install
cd ..
کتابخانه (libspatialite
):SpatiaLite
این قسمت رو برای کسانی گذاشتم که مراحل بعد از این مرحله رو رفتندو به مشکل برخوردند. خودم مشکل داشتم و این سورس رو نصب کردم و بعد رفتم سراغ مراحل بعدی 🙂
آخرین سورس کتابخانه فوق رو از این آدرس باید دریافت کنید. الان که من دارم این مقاله رو مینویسم آخرین نسخ 4.4.0-RC1
ز دستورات زیر استفاده کنید :
wget https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-4.4.0-RC1.tar.gz
tar xaf libspatialite-4.4.0-RC1.tar.gz
cd libspatialite-4.4.0-RC1
./configure
make
sudo make install
اگر حین اجرای دستوریconfigureه ارور زیر برخورد کردید:
configure: error: cannot find proj_api.h, bailing out
این دو دستور را ابتدا اجرا کنید و مجدد onfigureو ادامه دستورات:
sudo apt-get update
sudo apt-get install libproj-dev
اگر به ارور ذیل برخوردید :
configure: error: cannot find freexl.h, bailing out
کافیه این پکیج را نصب کنید :
sudo apt-get install libfreexl-dev
باز اگر به ارور زیر برخوردید:
configure: error: ‘libxml2’ is required but it doesn’t seem to be installed on this system.
پکیج libxml2-dev را نصب کنید :
sudo apt-get install libxml2-dev
تنظیمات پایگاه داده :
در حال حاضر GeoDjango از backend های زیر پشتیبانی می کنه:
django.contrib.gis.db.backends.postgis
django.contrib.gis.db.backends.mysql
django.contrib.gis.db.backends.oracle
django.contrib.gis.db.backends.spatialite
مشخصه که با توجه به توضیحات قبلیم و استفاده از Sqlite3 مورد آخر به کار من میاد. پس وارد settings.py میشم و از قسمت DATABASES موتور پایگاه داده ام را اصلاح میکنم، به شکل زیر :
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
پس شما ام با توجه به پایگاه داده ای که استفاده می کنید، Backendخود را اصلاح کنید.
حال django.contrib.gis
را به INSTALLED_APPS در setting.py اضافه کنید (حواستون به کامای بعد کوتیشن «’» باشه)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'web',
'django.contrib.gis',
]
حال نوبت به اضافه کردن cities به INSTALLED_APPS در Setting.pyپروژه تان رسیده است:
INSTALLED_APPS = (
# ...
'cities',
# ...
)
import confiuration
خب برای توضیحات این بخش بهتره به اینجا یه نگاهی بیاندازید، منتهی من خودم این تنظیمات رو داخل settings.py اعمال کردم (این تنظیمات دلخواهی هستند):
CITIES_POSTAL_CODES = ['ALL']
CITIES_LOCALES = ['ALL']
CITIES_VALIDATE_POSTAL_CODES = True
# Import cities without region (default False)
CITIES_SKIP_CITIES_WITH_EMPTY_REGIONS = True
# CITIES_LOCALES = ['c', 'und', 'LANGUAGES']
CITIES_LOCALES = ['ALL']
CITIES_POSTAL_CODES = ['US', 'IR']
حال دستور زیر رو اجرا کنید :
python manage.py cities --import=all
فقط برای import کردن بهتره که به پ ی ل ت ر ش ک ن وصل باشید تا هنگام دریافت اطلاعات به مشکل بر نخورید و امکان داره import کردن چند دقیقه ی طول بکشه، صبر داشته باشید 🙂
خب نصب و راه اندازی تموم شد، برای تست می تونید از مثال های صفحه گیت هاب پروژه django-cities استفاده کنید یا برای مثال داخل models.py از کتابخانه cities دو تا چجیز رو import کنید و پروژه را با runserver اجرا کنید و ببینید با قدم اول یعنی نصب درست کتابخانه و شناساندنش مشکل نداشته باشید.
آموزش بعدی ان شاالله از این کتابخانه برای انتخاب شهر و کشور در هنگام آدرسی دهی از سمت کاربر استفاده می کنم.
ارسال پاسخ