Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не получается вывести границы участка, (пишу текстовый вид кадастрового паспорта)
Адепт  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Пытаюсь создать кадастровый паспорт, данные лежат в базе на MySQL
передаю ID участка, запросом выбираю координаты, пытаюсь в цикле построить участок, полотно создается, но линий на нем не видно, я понимаю, что надо "перевернуть" координату "Y", но получить бы хоть что-то на экране, не вижу ошибки, помогите корифеи!

session_start();
$id = $_SESSION['id'];
header('Content-type: image/png');
$image = imagecreate(800, 800);
$w = ImageColorAllocate($image, 255, 255, 255);
$b = ImageColorAllocate($image, 0, 0, 0);
$points = mysql_query("SELECT * FROM b_koord_parcels WHERE ID = $id");
$x_max = mysql_result($points,$c,'x');
$x_min = mysql_result($points,$c,'x');
$y_max = mysql_result($points,$c,'y');
$y_min = mysql_result($points,$c,'y');
$c = 0;
for($c;$c<mysql_numrows($points);$c++)
{
if (mysql_result($points,$c,'x') > $x_max) $x_max = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'x') < $x_min) $x_min = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'y') > $y_max) $y_max = mysql_result($points,$c,'y');
if (mysql_result($points,$c,'y') < $y_min) $y_min = mysql_result($points,$c,'y');
}
if ($x_max>=$y_max) $kf = 800/($x_max-$x_min); else $kf = 800/($y_max-$y_min);
$c = 0;
for($c;$c<mysql_numrows($points);$c++)
{
$x1 = round($kf*(mysql_result($points,$c,'x')-$x_min),0);
$y1 = round($kf*(mysql_result($points,$c,'y')-$y_min),0);
$x2 = round($kf*(mysql_result($points,$c+1,'x')-$x_min),0);
$y2 = round($kf*(mysql_result($points,$c+1,'y')-$y_min),0);
imageline($image, $x1, $y1, $x2, $y2, $b);
}
imagepng($image);
imagedestroy($image);



Это сообщение отредактировал Адепт - 8.08.2016 - 12:11
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Одно уточнение, если использовать команду вывода линии в произвольном месте кода, то она появляется, если же её поместить в цикле, то опять ничего не выводится, думается, что вся проблема лежит там, но где именно, голову уже сломал!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 264
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 21 день
Карма: 31




Ну вот так последний цикл попробуй исправить:
for($c;$c<mysql_numrows($points)-1;$c++)
(минус один)


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25982
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 20 дней
Карма: 725

Не курю:
1 год, 2 месяца, 7 дней


Цитата
mysql_numrows

mysql_num_rows

Цитата

не вижу ошибки


<?php
ini_set("display_errors", 1);
error_reporting(-1);


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Цитата
(минус один)
Но отсчет начинается с 0 (нуля), нет в массиве -1-го элемента! :o

mysql_numrows (mysql_num_rows) - по первому варианту работает тоже! B)

Проблема не решилась ((( Проблема в принципе тут не в математике, если взять, например, функцию вывода отрезка:

imageline($image, $x1, $y1, $x2, $y2, $b);

забить туда произвольные значения и поместить в тело кода, то она отработает, но достаточно поместить эту команду в тело цикла и ничего не выводится, такое ощущение, что цикл не работает, тогда удаляем из кода графику и вместоотрисовки печатаем пары координат, опа! все работает, голову уже сломал, как так (стаж программирования на PHP, если что пару дней).

Понятно, вопросов больше не имею. 
Хорошего вам настроения!
- вы правы, до -1, я уже внимание потерял :(

Это сообщение отредактировал Адепт - 8.08.2016 - 13:56
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 264
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 21 день
Карма: 31




Цитата (Адепт @ 8.08.2016 - 12:49)
Цитата
(минус один)
Но отсчет начинается с 0 (нуля), нет в массиве -1-го элемента! ohmy.gif

Понятно, вопросов больше не имею.
Хорошего вам настроения!


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 264
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 21 день
Карма: 31




У тебя наверное E_DEPRECATED и E_NOTICE отключены.
А вот здесь (если без -1)
mysql_result($points,$c+1,'x')
случается E_WARNING, который не отключен, и из-за которого и нирисуит.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Цитата
и из-за которого и нирисуит.
, ну почему НЕ рисует!? Если статично загнать координаты, все рисует!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Беру этот код, убираю графику:

$points = mysql_query("SELECT * FROM b_koord_parcels WHERE ID = $id");
$c = 0;
$x_max = mysql_result($points,$c,'x');
$x_min = mysql_result($points,$c,'x');
$y_max = mysql_result($points,$c,'y');
$y_min = mysql_result($points,$c,'y');
for($c;$c<mysql_numrows($points);$c++)
{
if (mysql_result($points,$c,'x') > $x_max) $x_max = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'x') < $x_min) $x_min = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'y') > $y_max) $y_max = mysql_result($points,$c,'y');
if (mysql_result($points,$c,'y') < $y_min) $y_min = mysql_result($points,$c,'y');
}
if ($x_max>=$y_max) $kf = 800/($x_max-$x_min); else $kf = 800/($y_max-$y_min);
$c = 0;
echo 'Х max: '.$x_max.'<br>' ;
echo 'Х min: '.$x_min.'<br>' ;
echo 'Y мax: '.$y_max.'<br>' ;
echo 'Y мin: '.$y_min.'<br>' ;
echo '<hr>';
echo 'Kf: '.$kf;
echo '<hr>';
$dx = $x_max-$x_min;
$dy = $y_max-$y_min;
echo 'DХ: '.$dx.'<br>' ;
echo 'DY: '.$dy.'<br>' ;
echo '<hr>';
for($c;$c<mysql_numrows($points)-1;$c++)
{
$x1 = round($kf*(mysql_result($points,$c,'x')-$x_min),0);
echo 'x1: '.$x1.'<br>';
$y1 = round($kf*(mysql_result($points,$c,'y')-$y_min),0);
echo 'y1: '.$y1.'<br>';
$c++;
$x2 = round($kf*(mysql_result($points,$c,'x')-$x_min),0);
echo 'x2: '.$x2.'<br>';
$y2 = round($kf*(mysql_result($points,$c,'y')-$y_min),0);
echo 'y2: '.$y2.'<br>';
echo '<hr>';
}


Вот результат: user posted image
координаты.jpg
Стало быть проблема не с циклом и расчетами вовсе, а что-то с выводом самой линии, хотя ещё раз повторю, если вбить координаты в функцию и поставить команду до цикла, она отрисует...

Это сообщение отредактировал Адепт - 8.08.2016 - 14:22
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 264
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 21 день
Карма: 31




Ну убери -1 и увидишь warning. Когда ты делаешь картинку этот waning портит ее и браузер не может ее корректно отобразить.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Цитата
Ну убери -1 и увидишь warning. Когда ты делаешь картинку этот waning портит ее и браузер не может ее корректно отобразить.
- ничего не выдает, просто белая область 800Х800 и больше ничего!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Адепт  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 7
Пользователь №: 43238
На форуме: 3 месяца, 26 дней
Карма:




Спасибо всем, ваша помощь "очень помогла" ))) :D
Получился кадастровый паспорт:
user posted image

session_start();
include_once('mem.php');
mysql_connect($host, $log, $pas) or die('Error to connect server');
mysql_select_db($db) or die('Error to select database');
$id = $_SESSION['id'];
header('Content-type: image/png');
$image = imagecreate(800, 800);
$w = ImageColorAllocate($image, 255, 255, 255);
$b = ImageColorAllocate($image, 0, 0, 0);
$points = mysql_query("SELECT * FROM b_koord_parcels WHERE ID = $id");
$x_max = mysql_result($points,0,'x');
$x_min = mysql_result($points,0,'x');
$y_max = mysql_result($points,0,'y');
$y_min = mysql_result($points,0,'y');
$c = 1;
for($c;$c<mysql_numrows($points);$c++)
{
if (mysql_result($points,$c,'x') > $x_max) $x_max = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'x') < $x_min) $x_min = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'y') > $y_max) $y_max = mysql_result($points,$c,'y');
if (mysql_result($points,$c,'y') < $y_min) $y_min = mysql_result($points,$c,'y');
}
if (($x_max-$x_min)>($y_max-$y_min)) $kf = 760/($x_max-$x_min); else $kf = 760/($y_max-$y_min);
$c = 0;
for($c;$c<mysql_numrows($points)-1;$c++)
{
$x1 = round($kf*(mysql_result($points,$c,'x')-$x_min),0)+20;
$y1 = 760-round($kf*(mysql_result($points,$c,'y')-$y_min),0)+20;
$p1 = mysql_result($points,$c,'sunmb');
$kadn = mysql_result($points,$c,'CadastralNumber');
$x2 = round($kf*(mysql_result($points,$c+1,'x')-$x_min),0)+20;
$y2 = 760-round($kf*(mysql_result($points,$c+1,'y')-$y_min),0)+20;
imageline($image, $x1, $y1, $x2, $y2, $b);
imagestring($image,2,$x1,$y1+5,$p1,1);
imagestring($image,5,($x_max-$x_min)*$kf/2,($y_max-$y_min)*$kf/2,$kadn,1);
imagefilledellipse($image,$x1,$y1,5,5,$b);
}
imagepng($image);
imagedestroy($image);


Это сообщение отредактировал Адепт - 9.08.2016 - 15:03
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса